跳至頁尾內容
使用IRONPDF

如何在VB .NET中將圖像新增到PDF

1.0 什麼是ChatGPT?

ChatGPT是由OpenAI創造的人工智慧 (AI) 聊天機器人。 術語"ChatGPT"結合了"Chat"這個詞,暗指系統的聊天機器人功能,以及"GPT",代表生成式預訓練轉換器,是一種大型語言模型 (LLM)。 OpenAI的基本GPT模型,即GPT-3.5和GPT-4,是ChatGPT的基礎,這已通過監督學習和增強學習技術的結合進行了改進(轉移學習的一種方法),包括機器學習、自然語言處理和人工智慧。 ChatGPT能理解並生成類似人類的文字。

本文將示範如何開發一個使用OpenAI ChatGPT API的MAUI應用程式來收集訊息,根據使用者查詢提供結果,並使用IronPDF將這些結果匯出成PDF文件以供以後使用。

1.1 設置OpenAI帳戶

要註冊OpenAI帳戶,請執行以下操作:

  • 存取OpenAI的官方網站。
  • 在網站的首頁,找到並點擊註冊按鈕。 這會帶您進入帳戶建立表單。
  • 完成註冊表格的必要字段。
  • 點擊發送到您註冊的電子郵件帳戶的驗證連結以確認您的電子郵件地址。
  • 如果註冊成功,您應能夠通過輸入註冊時提供的登錄資訊來存取您的OpenAI帳戶。

1.2 獲取OpenAI API密鑰

  • 要存取OpenAI,請前往網站並使用您的帳戶資訊進行登錄。

    如何將ChatGPT與IronPDF用於C#開發者,第1圖:存取OpenAI網站 存取OpenAI網站

  • 導航到OpenAI平台的API區域。 然後帳戶設定 > 查看API密鑰,您可以在這裡找到它。
  • 現在您可以建立一個新的秘密API密鑰。

    如何將ChatGPT與IronPDF用於C#開發者,第2圖:建立API密鑰 建立API密鑰

2.0 開始使用.NET MAUI應用程式

您需要安裝Visual Studio 2022和.NET 7框架來建立用C#編寫的.NET MAUI應用程式。 然後,按照以下步驟來建立和編寫.NET MAUI應用程式。

2.1 打開Visual Studio

打開Visual Studio,然後從選單中選擇"建立新專案",並在搜索字段中輸入".NET MAUI"。

2.2 選擇.NET MAUI應用程式

在Visual Studio中,從搜索結果列表中選擇.NET MAUI應用程式模板。 選擇它後,為其起個合適的名稱並選擇專案所在位置。 配置完成後,點擊"下一步"。

如何將ChatGPT與IronPDF用於C#開發者,第3圖:在Visual Studio中建立新.NET MAUI應用程式 在Visual Studio中建立新.NET MAUI應用程式

2.3 選擇框架

選擇必要的框架; 然而,建議選擇最新的.NET框架。 選擇框架版本後,按Visual Studio中的建立按鈕。

如何將ChatGPT與IronPDF用於C#開發者,第4圖:配置新專案 配置新專案

在Visual Studio 2022中,將建立一個新的.NET MAUI專案。 .NET MAUI預設開發了一個簡單的計數應用程式。

如何將ChatGPT與IronPDF用於C#開發者,第5圖:.NET框架選擇 .NET框架選擇

通過修改.NET MAUI應用程式,可以在此類平台的變體上整合ChatGPT OpenAI並使用IronPDF C# PDF程式庫將結果導出到PDF文件。

2.4 安裝OpenAI程式包

在NuGet程式包管理員控制台中輸入以下命令。

Install-Package OpenAI

此命令將安裝OpenAI程式包,該程式包提供了通過C#與ChatGPT互動所需的API存取。

2.5 安裝IronPDF

輸入以下命令以安裝IronPDF程式包:

Install-Package IronPdf

上述命令將IronPDF安裝到MAUI專案中。 IronPDF 用於將HTML內容渲染成PDF文件,是從應用程式導出資料到PDF文件的關鍵部分。

3.0 什麼是IronPDF?

IronPDF是一個強大的PDF SDK框架,開發人員可以快速建立、讀取和編輯PDF文件。 IronPDF程式庫使用Chrome引擎將HTML轉換為PDF。 該程式庫支持的多種網頁組件包括MAUI、Xamarin、Blazor、Unity、HoloLens應用程式、Windows Forms、HTML、ASPX、Razor HTML、.NET Core、ASP.NET和WPF。 Microsoft.NET和.NET Core編程可以應用於傳統的Windows應用程式和ASP.NET Web應用程式。

使用HTML5、JavaScript、CSS和圖像,IronPDF允許您建立帶有標題和頁腳的美觀PDF。 API程式庫包括一個強大的HTML到PDF轉換器,可以處理PDF以及不依賴於任何外部來源的獨立PDF轉換工具和引擎。

要了解更多有關IronPDF的資訊,請參閱HTML-to-PDF轉換教程頁面

4.0 使用IronPDF匯出ChatGPT API結果

在 "MauiProgram.cs" 文件中新增以下程式碼:

builder.Services.AddChatGpt(options =>
{
    options.UseOpenAI("API key here"); // Replace with your actual OpenAI API key
    options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo; // Set the default model
    options.MessageLimit = 10; // Limit number of messages per session
    options.MessageExpiration = TimeSpan.FromMinutes(5); // Set message expiration time
});
builder.Services.AddChatGpt(options =>
{
    options.UseOpenAI("API key here"); // Replace with your actual OpenAI API key
    options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo; // Set the default model
    options.MessageLimit = 10; // Limit number of messages per session
    options.MessageExpiration = TimeSpan.FromMinutes(5); // Set message expiration time
});
builder.Services.AddChatGpt(Sub(options)
	options.UseOpenAI("API key here") ' Replace with your actual OpenAI API key
	options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo ' Set the default model
	options.MessageLimit = 10 ' Limit number of messages per session
	options.MessageExpiration = TimeSpan.FromMinutes(5) ' Set message expiration time
End Sub)
$vbLabelText   $csharpLabel

此程式碼片段註冊了一個ChatGPT API的服務,可以由應用程式中的其他類或頁面使用。

在應用程式的主頁面中,在頁面載入方法中新增以下程式碼。 這有助於獲取ChatGPT服務實例並將其儲存到本地物件中。

_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService(Of IChatGptClient)()
$vbLabelText   $csharpLabel

此程式碼從服務提供者檢索ChatGPT客戶端實例,使主頁可以與ChatGPT API互動。

接下來,建立一個使用者介面,如下XAML程式碼所示:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ChatGPT_MauiApp.MainPage"
             BackgroundColor="black">
    <StackLayout>
        <StackLayout Orientation="Horizontal" Spacing="25" Padding="30,0">
            <ScrollView WidthRequest="700" HeightRequest="200" x:Name="scrollView">
                <TableView Intent="Data" WidthRequest="700" x:Name="Table_View" BackgroundColor="DarkSlateGrey">
                    <TableRoot>

                    </TableRoot>
                </TableView>
            </ScrollView>
        </StackLayout>
        <StackLayout Padding="30,0">
            <Editor
                x:Name="Userquest"
                Text=""
                HorizontalOptions="Start"
                FontSize="12"
                Placeholder=" Enter your Queries"
                HeightRequest="25" WidthRequest="700" />
        </StackLayout>
        <StackLayout Padding="30,10,10,0">
            <FlexLayout>
                <Button
                    x:Name="Sendquery"
                    Text="Send Query"
                    SemanticProperties.Hint="Click to send query to BOT"
                    Clicked="SendqueryClicked"
                    HorizontalOptions="Center" 
                    BackgroundColor="Green"
                    TextColor="WhiteSmoke" />
                <Button
                    x:Name="Export"
                    Text="Export"
                    SemanticProperties.Hint="Click to export data"
                    Clicked="OnExportClicked"
                    HorizontalOptions="Center" 
                    BackgroundColor="DodgerBlue"
                    TextColor="WhiteSmoke" />
            </FlexLayout>
        </StackLayout>
    </StackLayout>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ChatGPT_MauiApp.MainPage"
             BackgroundColor="black">
    <StackLayout>
        <StackLayout Orientation="Horizontal" Spacing="25" Padding="30,0">
            <ScrollView WidthRequest="700" HeightRequest="200" x:Name="scrollView">
                <TableView Intent="Data" WidthRequest="700" x:Name="Table_View" BackgroundColor="DarkSlateGrey">
                    <TableRoot>

                    </TableRoot>
                </TableView>
            </ScrollView>
        </StackLayout>
        <StackLayout Padding="30,0">
            <Editor
                x:Name="Userquest"
                Text=""
                HorizontalOptions="Start"
                FontSize="12"
                Placeholder=" Enter your Queries"
                HeightRequest="25" WidthRequest="700" />
        </StackLayout>
        <StackLayout Padding="30,10,10,0">
            <FlexLayout>
                <Button
                    x:Name="Sendquery"
                    Text="Send Query"
                    SemanticProperties.Hint="Click to send query to BOT"
                    Clicked="SendqueryClicked"
                    HorizontalOptions="Center" 
                    BackgroundColor="Green"
                    TextColor="WhiteSmoke" />
                <Button
                    x:Name="Export"
                    Text="Export"
                    SemanticProperties.Hint="Click to export data"
                    Clicked="OnExportClicked"
                    HorizontalOptions="Center" 
                    BackgroundColor="DodgerBlue"
                    TextColor="WhiteSmoke" />
            </FlexLayout>
        </StackLayout>
    </StackLayout>
</ContentPage>
XML

上面的ContentPage定義了應用程式的UI佈局。 使用者可以輸入查詢,通過"發送查詢"按鈕與ChatGPT API互動,並通過"匯出"按鈕將結果導出為PDF。 結果顯示在TableView

接下來是處理按鈕點擊和資料匯出的程式碼後端邏輯:

private void OnExportClicked(object sender, EventArgs e)
{
    StringBuilder db = new();

    foreach (var tableSection in Table_View.Root.ToList())
    {
        foreach (var cell in tableSection)
        {
            if (cell is TextCell textCell)
            {
                db.Append("<p style='color:red;text-align:left;'>" + textCell.Text + "</p>");
                db.Append("<p style='color:black;text-align:justify;'>" + textCell.Detail + "</p>");
            }
        }
    }

    // Create and save the PDF
    var renderer = new IronPdf.ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(db.ToString());
    pdf.SaveAs("F:\\Download\\Demo.pdf");
}

private async void SendqueryClicked(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(Userquest.Text))
    {
        var query = Userquest.Text;
        Userquest.Text = "";
        var tableSection = AddQueryToTable(query);
        ChatGptResponse response = await _chatGptClient.AskAsync(_sessionGuid, query);
        var resp = response.GetMessage();
        AddResponseToTable(tableSection, resp);
    }
}

private TableSection AddQueryToTable(string query)
{
    var textCell = new TextCell
    {
        Text = query,
        TextColor = Colors.Red,
        DetailColor = Colors.WhiteSmoke,
        Detail = ""
    };

    var tableSection = new TableSection { textCell };
    Table_View.Root.Add(tableSection);
    return tableSection;
}

private void AddResponseToTable(TableSection section, string response)
{
    if (section.FirstOrDefault() is TextCell textCell)
    {
        textCell.Detail = response;
    }
}
private void OnExportClicked(object sender, EventArgs e)
{
    StringBuilder db = new();

    foreach (var tableSection in Table_View.Root.ToList())
    {
        foreach (var cell in tableSection)
        {
            if (cell is TextCell textCell)
            {
                db.Append("<p style='color:red;text-align:left;'>" + textCell.Text + "</p>");
                db.Append("<p style='color:black;text-align:justify;'>" + textCell.Detail + "</p>");
            }
        }
    }

    // Create and save the PDF
    var renderer = new IronPdf.ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(db.ToString());
    pdf.SaveAs("F:\\Download\\Demo.pdf");
}

private async void SendqueryClicked(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(Userquest.Text))
    {
        var query = Userquest.Text;
        Userquest.Text = "";
        var tableSection = AddQueryToTable(query);
        ChatGptResponse response = await _chatGptClient.AskAsync(_sessionGuid, query);
        var resp = response.GetMessage();
        AddResponseToTable(tableSection, resp);
    }
}

private TableSection AddQueryToTable(string query)
{
    var textCell = new TextCell
    {
        Text = query,
        TextColor = Colors.Red,
        DetailColor = Colors.WhiteSmoke,
        Detail = ""
    };

    var tableSection = new TableSection { textCell };
    Table_View.Root.Add(tableSection);
    return tableSection;
}

private void AddResponseToTable(TableSection section, string response)
{
    if (section.FirstOrDefault() is TextCell textCell)
    {
        textCell.Detail = response;
    }
}
Private Sub OnExportClicked(ByVal sender As Object, ByVal e As EventArgs)
	Dim db As New StringBuilder()

	For Each tableSection In Table_View.Root.ToList()
		For Each cell In tableSection
			Dim tempVar As Boolean = TypeOf cell Is TextCell
			Dim textCell As TextCell = If(tempVar, CType(cell, TextCell), Nothing)
			If tempVar Then
				db.Append("<p style='color:red;text-align:left;'>" & textCell.Text & "</p>")
				db.Append("<p style='color:black;text-align:justify;'>" & textCell.Detail & "</p>")
			End If
		Next cell
	Next tableSection

	' Create and save the PDF
	Dim renderer = New IronPdf.ChromePdfRenderer()
	Dim pdf = renderer.RenderHtmlAsPdf(db.ToString())
	pdf.SaveAs("F:\Download\Demo.pdf")
End Sub

Private Async Sub SendqueryClicked(ByVal sender As Object, ByVal e As EventArgs)
	If Not String.IsNullOrEmpty(Userquest.Text) Then
		Dim query = Userquest.Text
		Userquest.Text = ""
		Dim tableSection = AddQueryToTable(query)
		Dim response As ChatGptResponse = Await _chatGptClient.AskAsync(_sessionGuid, query)
		Dim resp = response.GetMessage()
		AddResponseToTable(tableSection, resp)
	End If
End Sub

Private Function AddQueryToTable(ByVal query As String) As TableSection
	Dim textCell As New TextCell With {
		.Text = query,
		.TextColor = Colors.Red,
		.DetailColor = Colors.WhiteSmoke,
		.Detail = ""
	}

	Dim tableSection As New TableSection From {textCell}
	Table_View.Root.Add(tableSection)
	Return tableSection
End Function

Private Sub AddResponseToTable(ByVal section As TableSection, ByVal response As String)
	Dim tempVar As Boolean = TypeOf section.FirstOrDefault() Is TextCell
	Dim textCell As TextCell = If(tempVar, CType(section.FirstOrDefault(), TextCell), Nothing)
	If tempVar Then
		textCell.Detail = response
	End If
End Sub
$vbLabelText   $csharpLabel

解釋:

  • OnExportClicked方法使用IronPDF從從UI獲取的HTML內容建立PDF。 生成的PDF將保存到指定位置。

  • _chatGptClient將其發送到OpenAI API並顯示響應。 它還將查詢和響應新增到TableView中。

  • 助手方法AddResponseToTable協助更新使用者查詢和聊天機器人響應的UI組件。

新增上述程式碼後,嘗試運行您的解決方案。 輸入查詢,然後點擊"發送查詢"按鈕以獲取結果。 它將使用者查詢發送到ChatGPT API,檢索結果,並將消息顯示在螢幕上。

如何將ChatGPT與IronPDF用於C#開發者,第7圖:將文字查入應用程式中 在應用程式中新增文字查詢

點擊"匯出"按鈕以將結果匯出成PDF。

如何將ChatGPT與IronPDF用於C#開發者,第8圖:匯出的PDF文件 匯出的PDF文件

現在,我們可以使用ChatGPT建立聊天機器人,並在MAUI App上使用IronPDF匯出該聊天。使用上述概念,可以從ChatGPT API中包括圖像、音訊和影片,以獲得更準確的結果。

5.0 結論

本文的目標是開發一個使用OpenAI ChatGPT API的MAUI應用程式來收集訊息,根據使用者查詢提供結果,並將這些結果匯出成PDF文件。為了提高建議的質量,請隨意通過改變問題來探索。 您還可以通過修改在"MauiProgram.cs"中的ChatGptModels enum值進行實驗,以查看不同模型是否能產生更好的結果。

ChatGPT API是一個強大的AI程式,可以根據使用者查詢提供結果。 ChatGPT API的成本是根據發送的請求數量計算的。 IronPDF用於發送API請求並將結果導出成PDF以供未來使用,避免重複查詢相同的API請求。

我們只需幾行程式碼就可以使用IronPDF建立PDF。 本應用程式適合初學者,僅需基本知識即可使用。 IronPDF在任何方面都不依賴於其他程式包。 例如,這是一個單包提供的程式庫。 IronPDF開發者可以選擇不同的授權方案以滿足其需求。 還提供免費試用。 欲了解有關IronPDF的完整定價和授權資訊,請參閱IronPDF授權頁面

常見問題

我如何將 ChatGPT 與 .NET MAUI 應用程式整合?

要在 .NET MAUI 應用程式中整合 ChatGPT,首先要設置 OpenAI 帳戶並獲取 API 金鑰。然後,在專案中通過 NuGet 安裝 OpenAI 套件,並在應用程式中配置 API,以處理使用者查詢。

如何在 MAUI 應用程式中將 API 結果轉換為 PDF?

您可以使用 IronPDF 將 API 結果轉換為 MAUI 應用程式中的 PDF。在從 ChatGPT API 獲取回復後,使用 IronPDF 的方法將 HTML 內容渲染為 PDF。

設置 ChatGPT 驅動的 MAUI 應用程式涉及哪些步驟?

要設置 ChatGPT 驅動的 MAUI 應用程式,請在 Visual Studio 中建立一個新的 .NET MAUI 專案,安裝 OpenAI 和 IronPDF 套件,在程式碼中配置 API 設置,並編寫邏輯來處理查詢以及將結果輸出為 PDF。

IronPDF 是否可以在建立 PDF 時處理 HTML、JavaScript 和 CSS 內容?

是的,IronPDF 可以在建立 PDF 時處理 HTML、JavaScript 和 CSS 內容。它使用 Chrome 渲染引擎將 HTML 內容轉換為 PDF 文件。

在我的應用程式中可以自定義 ChatGPT API 設定嗎?

是的,您可以通過在 MauiProgram.cs 文件中調整模型型別、消息限制和過期時間等參數來自定義應用程式中的 ChatGPT API 設定。

在 MAUI 應用程式中使用 IronPDF 的好處是什麼?

IronPDF 提供了強大的 SDK 用於建立、讀取和編輯 PDF。它能夠將 HTML 內容轉換為 PDF,支持文字提取,並提供各種功能以增強在 MAUI 應用程式中的 PDF 處理能力。

IronPDF是否提供免費試用?

是的,IronPDF 提供免費試用,允許開發者在承諾購買授權計劃前探索其功能。

如何為 MAUI 中的 ChatGPT PDF 專案安裝必要的套件?

using Visual Studio 中的 NuGet 套件管理器控制台安裝 OpenAI 和 IronPDF 套件。執行 Install-Package OpenAIInstall-Package IronPDF 將它們新增到您的專案中。

IronPDF 在處理 PDF 文件中的作用是什麼?

IronPDF 用於建立、編輯和轉換 PDF 文件。它允許開發者將網頁內容轉換為 PDF,進行文字搜尋和提取圖片,對於需要 PDF 功能的應用程式非常理想。

IronPDF 是否完全相容 .NET 10?

是的,IronPDF 完全相容 .NET 10。它支持所有主要 .NET 版本,包括 .NET 10、9、8、7、6、Core,以及 .NET Framework,並且設計為可即插即用於 .NET 10 專案中,無需特殊設置。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話