C# JPG'yi PDF'ye Dönüştürme (Kod Örnekleri Eğitimi)
1.0 ChatGPT Nedir?
ChatGPT, OpenAI tarafından oluşturulmuş bir yapay zeka (AI) sohbet robotudur. "ChatGPT" terimi, sistemin sohbet robotu işlevine atıfta bulunan "Chat" ve büyük dil modeli (LLM) türlerinden biri olan Generative Pre-trained Transformer anlamına gelen "GPT" kelimelerinin birleşiminden oluşur. OpenAI'nin temel GPT modelleri olan GPT-3.5 ve GPT-4, ChatGPT'nin temelini oluşturur ve konuşma uygulamaları için denetimli ve güçlendirme öğrenme tekniklerinin bir kombinasyonu ile transfer öğrenimi yöntemi ile rafine edilmiştir, bu teknikler makine öğrenimi, doğal dil işleme ve yapay zeka içerir. ChatGPT, insan benzeri metni anlayabilir ve oluşturabilir.
Bu makale, mesajlar almak, kullanıcı sorgularına dayalı sonuçlar sunmak ve ardından bu sonuçları daha sonra kullanılmak üzere bir PDF dosyası olarak dışa aktarmak için OpenAI ChatGPT API'sini kullanan bir MAUI uygulamasının nasıl geliştirileceğini gösterecektir.
1.1 OpenAI hesabını ayarlama
OpenAI hesabına kaydolmak için şunları yapın:
- Resmi OpenAI web sitesine gidin.
- Web sitesinin ana sayfasında, Kaydol düğmesini bulun ve tıklayın. Bu sizi hesap oluşturma formuna götürecektir.
- Kaydolma formunun gerekli alanlarını doldurun.
- E-posta adresinizi onaylamak için kayıtlı e-posta hesabınıza gönderilen doğrulama bağlantısına tıklayın.
- Kaydınız başarılıysa, kayıt sırasında verdiğiniz giriş bilgilerini girerek OpenAI hesabınıza erişebilmelisiniz.
1.2 OpenAI API anahtarı alma
-
OpenAI'ye erişmek için web sitesine gidin ve hesap bilgilerinizle giriş yapın.
OpenAI web sitesine erişim - OpenAI platformunun API alanına gidin. Sonra Hesap Ayarları > API anahtarını göster, burada bulabilirsiniz.
-
Şimdi yeni bir gizli API anahtarı oluşturabilirsiniz.
API anahtarlarını oluştur
2.0 .NET MAUI Uygulaması ile Başlamaya
C# ile yazılan .NET MAUI uygulamasını oluşturmak için Visual Studio 2022 ve .NET 7 Framework'ün yüklü olması gerekiyor. Sonra, bir .NET MAUI uygulaması oluşturmak ve yazmak için sonraki adımları izleyin.
2.1 Visual Studio'yu Aç
Visual Studio'yu açın, ardından menüden "Yeni Proje Oluştur" seçeneğini seçin ve arama alanına ".NET MAUI" girin.
2.2 .NET MAUI Uygulamasını Seçin
Visual Studio'da, arama sonuçları listesinden .NET MAUI uygulama şablonunu seçin. Seçtikten sonra ona uygun bir ad verin ve projenin konumunu seçin. Yapılandırma tamamlandığında "İleri" tuşuna tıklayın.
Visual Studio'da yeni bir .NET MAUI Uygulaması oluştur
2.3 Çerçeve Seçin
Gerekli çerçeveyi seçin; yine de, örneğin, en güncel .NET Çerçevesini seçmeniz önerilir. Çerçeve sürümü seçildikten sonra Visual Studio'da Oluştur düğmesine basın.
Yeni projeyi yapılandırın
Visual Studio 2022'de bir yeni .NET MAUI Projesi oluşturulacak. .NET MAUI, varsayılan olarak, basit bir sayaç uygulaması geliştirir.
.NET Framework seçimi
.NET MAUI uygulamasını düzenleyerek, ChatGPT OpenAI'yi entegre edebilir ve bu platform varyantlarında IronPDF C# PDF kütüphanesi kullanarak sonucu PDF dosyalarına aktarabilir.
2.4 OpenAI Paketini Yükleme
NuGet Paket Yöneticisi Konsolunda bir sonraki komutu girin.
Install-Package OpenAI
Bu komut, C# kullanarak ChatGPT ile etkileşim için gerekli API'ye erişim sağlayan OpenAI paketini yükleyecektir.
2.5 IronPDF'yi Yükleme
IronPDF paketini yüklemek için aşağıdaki komutu girin:
Install-Package IronPdf
Yukarıdaki komut, IronPDF'yi MAUI projesine yükler. IronPDF, HTML içeriğini PDF dosyalarına dönüştürmek için kullanılır ve uygulamadan verilerin PDF belgeye aktarılmasında anahtar bir rol oynar.
3.0 IronPDF Nedir?
Geliştiriciler, IronPDF sayesinde hızla PDF belgeleri oluşturabilir, okuyabilir ve düzenleyebilir; bu, PDF işlemesi için sağlam bir PDF SDK temeli oluşturur. IronPDF kütüphanesi, HTML'yi PDF'ye dönüştürmek için Chrome motorunu kullanır. Kütüphanenin desteklediği çeşitli web bileşenleri arasında MAUI, Xamarin, Blazor, Unity, HoloLens uygulamaları, Windows Forms, HTML, ASPX, Razor HTML, .NET Core, ASP.NET ve WPF bulunur. Microsoft.NET ve .NET Core programlaması hem geleneksel Windows uygulamaları hem de ASP.NET web uygulamalarında kullanılabilir.
IronPDF, HTML5, JavaScript, CSS ve resimler kullanarak başlık ve altbilgiye sahip çekici PDF'ler oluşturmanıza olanak tanır. API kütüphanesi, PDF'lerle başa çıkabilen sağlam bir HTML'den PDF'ye dönüştürücü içerir ve harici kaynaklardan bağımsız bir motor ve stand-alone PDF dönüştürme aracı içerir.
- Kullanıcılar, görüntü dosyaları, HTML, HTML5, ASPX ve Razor/MVC View dahil olmak üzere çeşitli kaynaklardan IronPDF ile PDF üretebilirler.
- Kütüphane, metin arama programları sunar, PDF sayfalarından metin ve resimlerin çıkartılması ve PDF sayfalarını resimlere dönüştürme için programlar içerir. Ayrıca, etkileşimli form doldurma ve gönderimi için bir program sunar.
- Kütüphane, PDF yayınlarının temelini oluşturan bağlantılar sağlar, kullanıcının ajanları, vekilleri, çerezleri, HTTP başlıkları ve form değişkenlerini HTML giriş formu arkasında kimlik doğrulama için kullanır.
- IronPDF, parola ile korunan PDF dosyalarına erişim karşılığında kullanıcı adları ve şifreler kabul eder.
IronPDF hakkında daha fazla bilgi için HTML-to-PDF dönüştürme kılavuz sayfalarına bakın.
4.0 ChatGPT API Sonucunu IronPDF Kullanarak Dışa Aktarma
"MauiProgram.cs" dosyasına aşağıdaki kodu ekleyin:
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)
Bu kod parçası, uygulamanızdaki diğer sınıflar veya sayfalar tarafından kullanılabilecek bir ChatGPT API servisi kaydeder.
Uygulamanın ana sayfasına, sayfa yükleme yönteminde aşağıdaki kodu ekleyin. Bu, ChatGPT servis örneğini almanıza ve yerel bir nesneye saklamanıza yardımcı olur.
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService(Of IChatGptClient)()
Bu kod, ana sayfanın ChatGPT API ile etkileşimde bulunmasına olanak tanıyan servis sağlayıcıdan ChatGPT istemci örneğini geri alır.
Sonraki adım, aşağıdaki XAML kodunda tasvir edilen gibi bir kullanıcı arayüzü oluşturmaktır:
<?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>
Yukarıdaki ContentPage uygulamanın UI düzenini tanımlar. Kullanıcılar sorgular girebilir, "Sorgu Gönder" düğmesi aracılığıyla ChatGPT API ile etkileşimde bulunabilir ve sonuçları "Dışa Aktar" düğmesini kullanarak PDF olarak dışa aktarabilir. Sonuçlar TableView içinde görüntülenir.
Bir sonraki adım, düğme tıklamalarını işlemek ve verileri dışa aktarmak için kod-arka mantığıdır:
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
Açıklama:
-
OnExportClickedyöntemi, UI'dan toplanan HTML içeriğinden IronPDF kullanarak bir PDF oluşturur. Oluşturulan PDF belirlenen bir konuma kaydedilir. -
SendqueryClickedyöntemi, kullanıcının sorgusunu alır, bunu_chatGptClientkullanarak OpenAI API'ye gönderir ve yanıtı görüntüler. Ayrıca sorguyu ve yanıtıTableViewiçine ekler. - Yardımcı yöntemler
AddQueryToTableveAddResponseToTable, kullanıcı sorguları ve chatbot yanıtları ile UI bileşenlerini güncellemede yardım eder.
Yukarıdaki kodu ekledikten sonra çözümünüzü çalıştırmaya çalışın. Sorgu girin ve "Sorgu Gönder" düğmesine tıklayarak sonucu alın. Kullanıcının sorgusunu ChatGPT API'ye gönderecek, sonucu geri alacak ve ekran mesajını gösterecektir.
Uygulamaya metin sorgusu ekle
Sonuçları PDF'ye aktarmak için "Dışa Aktar" düğmesine tıklayın.
Dışa aktarılan PDF dosyası
Artık, ChatGPT kullanarak bir chatbot oluşturabildik ve bu sohbeti IronPDF'yi MAUI Uygulaması üzerinde kullanarak dışa aktardık. Yukarıdaki kavramı kullanarak, daha doğru sonuçlar için ChatGPT API'den resim, ses ve video dahil edilebilir.
Sonuç
Bu makalenin amacı, OpenAI ChatGPT API'sini kullanarak mesajları almak, kullanıcı sorgularına dayalı sonuçlar sunmak ve bu sonuçları bir PDF dosyası olarak dışa aktarmak için bir MAUI uygulaması geliştirmektir. Önerilerin kalitesini artırmak için, soruları değiştirerek keşfetmekte özgürsünüz. Farklı modellerin daha iyi sonuçlar üretip üretmediğini görmek için, 'MauiProgram.cs' içindeki AddChatGpt yönteminde ChatGptModels enum değerini değiştirmeyi de deneyebilirsiniz.
ChatGPT API'si, bize kullanıcı sorgusu temelinde sonuçlar sağlamamıza olanak tanıyan güçlü bir yapay zeka programıdır. ChatGPT API'sinin maliyeti, gönderilen isteklerin sayısına göre hesaplanır. IronPDF, API isteklerinde bulunmak ve sonucu gelecekteki kullanımlar için PDF'ye aktarmak amacıyla kullanılır, böylece aynı API isteğinin sürekli sorgulanmasını önler.
IronPDF ile sadece birkaç satır kodla PDF oluşturabiliriz. Bu uygulama, yeni başlayanlar için uygundur ve kullanmak için sadece temel bilgileri gerektirir. Başka hiçbir paket, IronPDF'ye bağlı değildir. Örneğin, tek bir pakette gelen bir kütüphanedir. IronPDF geliştiricileri, gereksinimlerine uygun çeşitli lisanslardan seçim yapabilirler. Ayrıca ücretsiz bir deneme bulunmaktadır. IronPDF'nin fiyatlandırma ve lisanslama bilgileri için, IronPDF lisanslama sayfasına bakın.
Sıkça Sorulan Sorular
.NET MAUI uygulamasıyla ChatGPT'yi nasıl entegre edebilirim?
ChatGPT'yi .NET MAUI uygulamasıyla entegre etmek için önce OpenAI hesabınızı kaydedin ve bir API anahtarı edinin. Sonra, projenizde OpenAI paketini NuGet ile yükleyin ve kullanıcı sorgularını yönetmek için uygulamanızda API'yi yapılandırın.
Bir MAUI uygulamasında API sonuçlarını PDF'ye nasıl dönüştürürüm?
Bir MAUI uygulamasında API sonuçlarını PDF'ye dönüştürebiliriz, yanıtları ChatGPT API'den aldıktan sonra, HTML içeriğini PDF olarak işlemek için IronPDF'in yöntemlerini kullanabilirsiniz.
ChatGPT destekli bir MAUI uygulaması kurma adımlarını nelerdir?
ChatGPT destekli bir MAUI uygulaması kurmak için, Visual Studio'da yeni bir .NET MAUI projesi oluşturun, OpenAI ve IronPDF paketlerini yükleyin, kodunuzda API ayarlarını yapılandırın ve sorguları işlemek ve PDF'ye çıktı almak için mantığı yazın.
IronPDF PDF oluşturduğunda HTML, JavaScript ve CSS içeriğini işleyebilir mi?
Evet, IronPDF, PDF oluştururken HTML, JavaScript ve CSS içeriğini işleyebilir. HTML içeriğini PDF belgesine dönüştürmek için Chrome görüntüleme motorunu kullanır.
Uygulamamda ChatGPT API ayarlarını özelleştirmek mümkün mü?
Evet, uygulamanızda ChatGPT API ayarlarını MauiProgram.cs dosyasında model tipleri, mesaj limitleri ve geçerlilik süreleri gibi parametreleri ayarlayarak özelleştirebilirsiniz.
Bir MAUI uygulamasında IronPDF kullanmanın avantajları nelerdir?
IronPDF, PDF oluşturma, okuma ve düzenleme için sağlam bir SDK sağlar. HTML içeriğini PDF'lere dönüştürmeyi, metin çıkarmayı ve MAUI uygulamasında PDF yönetimini artırmak için çeşitli işlevsellikler sunar.
IronPDF için ücretsiz bir deneme mevcut mu?
Evet, IronPDF, geliştiricilerin lisanslama planına taahhütte bulunmadan önce özelliklerini ve işlevselliklerini keşfetmelerine olanak tanıyan ücretsiz bir deneme sunmaktadır.
MAUI'de bir ChatGPT PDF projesi için gerekli paketler nasıl yüklenir?
Visual Studio'da NuGet Paket Yöneticisi Konsolu'nu kullanarak OpenAI ve IronPDF paketlerini yükleyin. Projenize eklemek için Install-Package OpenAI ve Install-Package IronPDF komutlarını çalıştırın.
IronPDF'in PDF belgelerini yönetmedeki rolü nedir?
IronPDF, PDF belgelerinin oluşturulması, düzenlenmesi ve dönüştürülmesi için kullanılır. Web içeriğini PDF'lere dönüştürmeyi, metin aramaları yapmayı ve görseller çıkarmayı sağlar, bu da uygulamaların PDF yeteneklerine ihtiyaç duyulan için idealdir.
IronPDF, .NET 10 ile tam uyumlu mu?
Evet, IronPDF, .NET 10 ile tamamen uyumludur. Tüm büyük .NET sürümlerini–.NET 10, 9, 8, 7, 6, Core ve .NET Framework'ü destekler, ve .NET 10 projelerinde kullanmak için özel bir yapılandırma gerektirmez.

