
如何在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,請前往網站並使用您的帳戶資訊進行登錄。
存取OpenAI網站 -
導航到OpenAI平台的API區域。 然後帳戶設定 > 查看API密鑰,您可以在這裡找到它。
-
現在您可以建立一個新的秘密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應用程式模板。 選擇它後,為其起個合適的名稱並選擇專案所在位置。 配置完成後,點擊"下一步"。
在Visual Studio中建立新.NET MAUI應用程式
2.3 選擇框架
選擇必要的框架; 然而,建議選擇最新的.NET框架。 選擇框架版本後,按Visual Studio中的建立按鈕。
配置新專案
在Visual Studio 2022中,將建立一個新的.NET MAUI專案。 .NET MAUI預設開發了一個簡單的計數應用程式。
.NET框架選擇
通過修改.NET MAUI應用程式,可以在此類平台的變體上整合ChatGPT OpenAI並使用IronPDF C# PDF程式庫將結果導出到PDF文件。
2.4 安裝OpenAI程式包
在NuGet程式包管理員控制台中輸入以下命令。
此命令將安裝OpenAI程式包,該程式包提供了通過C#與ChatGPT互動所需的API存取。
2.5 安裝IronPDF
輸入以下命令以安裝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轉換工具和引擎。
- 使用者可以從多種來源生成PDF,包括圖像文件、HTML、HTML5、ASPX和Razor/MVC View。
- 該程式庫提供文字搜索、從PDF頁面提取文字和圖像,以及將PDF頁面轉換為圖像的程式。 它還提供了一個程式,用於互動式表單填寫和提交。
- 該程式庫還提供連結作為PDF出版物的基礎,以及使用使用者代理、代理、Cookie、HTTP標題和表單變數來進行HTML登錄表單後的身份驗證。
- IronPDF接受使用者名和密碼,以換取存取受密碼保護的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(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)此程式碼片段註冊了一個ChatGPT API的服務,可以由應用程式中的其他類或頁面使用。
在應用程式的主頁面中,在頁面載入方法中新增以下程式碼。 這有助於獲取ChatGPT服務實例並將其儲存到本地物件中。
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();_chatGptClient = Handler.MauiContext.Services.GetService(Of IChatGptClient)()此程式碼從服務提供者檢索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>
<!-- TableSection can be populated with dynamic data -->
</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>
上面的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 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解釋:
-
OnExportClicked方法使用IronPDF從從UI獲取的HTML內容建立PDF。 生成的PDF將保存到指定位置。 -
_chatGptClient將其發送到OpenAI API並顯示響應。 它還將查詢和響應新增到TableView中。 -
助手方法
AddResponseToTable協助更新使用者查詢和聊天機器人響應的UI組件。
新增上述程式碼後,嘗試運行您的解決方案。 輸入查詢,然後點擊"發送查詢"按鈕以獲取結果。 它將使用者查詢發送到ChatGPT API,檢索結果,並將消息顯示在螢幕上。
在應用程式中新增文字查詢
點擊"匯出"按鈕以將結果匯出成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授權頁面。

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


