C# OAuth2 (Geliştiriciler İçin Nasıl Çalışır)
OAuth2, kullanıcı kimliği doğrulama ve yetkilendirmeyi ele alarak web uygulamalarınızı güvence altına almak için güçlü bir protokoldür. C# geliştirme dünyasında, OAuth2'yi anlamak uygulamanızın güvenliğini ve işlevselliğini büyük ölçüde artırabilir.
Bu kılavuz, başlangıç seviyesindeki kişiler için temel kavramlar, pratik örnekler ve anlaşılması kolay açıklamalara odaklanarak özelleştirilmiştir. Ayrıca, OAuth2'yi IronPDF kütüphanesi ile bir kullanım durumu öğreneceğiz.
OAuth2'yi Anlamak ve Önemi

OAuth2, bir istemci uygulamasının bir kullanıcı adına bir yetkilendirme sunucusu tarafından barındırılan kaynaklara erişim talep etmesine olanak tanıyan bir protokoldür. Modern web uygulamalarında kullanıcı kimliği doğrulama ve yetkilendirme işlemlerini ele almak için yaygın bir yöntemdir.
OAuth2'nin birincil hedefi, kullanıcı parolası ve kullanıcı adı gibi kimlik bilgilerini doğrudan istemci uygulama ile paylaşmadan kaynaklara güvenli ve etkili erişim sağlamaktır.
OAuth2'deki Temel Kavramlar
Uygulamaya geçmeden önce, bazı temel OAuth2 terminolojilerini açıklığa kavuşturalım:
- İstemci Uygulama: Kullanıcının hesabına erişim talep eden uygulama.
- Yetkilendirme Sunucusu: Kullanıcının kimliğini doğrulayan ve istemci uygulamaya erişim jetonu veren sunucu.
- Erişim Jetonu: İstemci uygulamaya kullanıcının hesabına sınırlı süreli erişim veren bir jeton.
- Yenileme Jetonu: Mevcut olanının süresi dolduğunda yeni bir erişim jetonu elde etmek için kullanılan bir jeton.
- İstemci Kimliği ve İstemci Sırrı: İstemci uygulamayı yetkilendirme sunucusuna tanıtan kimlik bilgileri.
- Yönlendirme URI'si: Yetkilendirme sunucusunun kullanıcıya erişimi verip vermemeye karar verdikten sonra istemci uygulamasına göndereceği URI.
- Yetkilendirme Kodu Akışı: İstemci uygulamanın bir yetkilendirme kodunu bir erişim jetonu ile değiştirmeden önce bir ara adım olarak aldığı güvenli bir yöntem.
C#'te OAuth2'yi Uygulamak: Temel Bir Örnek
Kullanıcı kimliği doğrulama için OAuth2 kullanan basit bir C# uygulaması oluşturalım. Bu örnek, bir OAuth2 istemcisi kurma, bir erişim jetonu elde etme ve korumalı bir kaynağa istek gönderme işlemlerinde size rehberlik edecektir.
OAuth2 İstemcinizi Kurmak
Öncelikle, C# uygulamanızı OAuth2 yetkilendirme sunucusu ile kaydetmeniz gerekir. Bu süreç, sunucuya bağlı olarak değişir, ancak genellikle bir istemci kimliği ve bir istemci sırrı alırsınız, bunlar OAuth2 akışı için çok önemlidir.
Adım 1: Uygulamanızın Kimlik Bilgilerini Tanımlayın
İlk adım olarak, istemci kimlik bilgilerinizi istemci kimliği ve istemci sırrı gibi ayarlayın. İşte örnek kod:
// Define your client credentials
class Program
{
private static string clientId = "your-client-id"; // Your client ID
private static string clientSecret = "your-client-secret"; // Your client secret
private static string redirectUri = "your-redirect-uri"; // Your redirect URI
static void Main(string[] args)
{
// OAuth2 implementation will go here
}
}
// Define your client credentials
class Program
{
private static string clientId = "your-client-id"; // Your client ID
private static string clientSecret = "your-client-secret"; // Your client secret
private static string redirectUri = "your-redirect-uri"; // Your redirect URI
static void Main(string[] args)
{
// OAuth2 implementation will go here
}
}
' Define your client credentials
Friend Class Program
Private Shared clientId As String = "your-client-id" ' Your client ID
Private Shared clientSecret As String = "your-client-secret" ' Your client secret
Private Shared redirectUri As String = "your-redirect-uri" ' Your redirect URI
Shared Sub Main(ByVal args() As String)
' OAuth2 implementation will go here
End Sub
End Class
Adım 2: Kullanıcı Yetkilendirmesi Talep Etmek
OAuth2 akışını başlatmak için kullanıcıyı yetkilendirme sunucusunun yetkilendirme noktasına yönlendirin. Yetkilendirme isteği için URL'nin nasıl oluşturulacağını burada bulabilirsiniz:
static void Main(string[] args)
{
var authorizationEndpoint = "https://authorization-server.com/auth"; // Authorization server endpoint
var responseType = "code"; // Response type for authorization
var scope = "email profile"; // Scopes for the authorization request
var authorizationUrl = $"{authorizationEndpoint}?response_type={responseType}&client_id={clientId}&redirect_uri={redirectUri}&scope={scope}";
// Redirect the user to authorizationUrl
}
static void Main(string[] args)
{
var authorizationEndpoint = "https://authorization-server.com/auth"; // Authorization server endpoint
var responseType = "code"; // Response type for authorization
var scope = "email profile"; // Scopes for the authorization request
var authorizationUrl = $"{authorizationEndpoint}?response_type={responseType}&client_id={clientId}&redirect_uri={redirectUri}&scope={scope}";
// Redirect the user to authorizationUrl
}
Shared Sub Main(ByVal args() As String)
Dim authorizationEndpoint = "https://authorization-server.com/auth" ' Authorization server endpoint
Dim responseType = "code" ' Response type for authorization
Dim scope = "email profile" ' Scopes for the authorization request
Dim authorizationUrl = $"{authorizationEndpoint}?response_type={responseType}&client_id={clientId}&redirect_uri={redirectUri}&scope={scope}"
' Redirect the user to authorizationUrl
End Sub
Adım 3: Yetkilendirme Yanıtını İşlemek
Kullanıcı izni verdikten veya reddettikten sonra, yetkilendirme sunucusu onları yetkilendirme kodu veya hata mesajıyla birlikte uygulamanıza yönlendirir. Bu kodu yönlendirme URI'sinin sorgu parametrelerinden yakalamanız gerekiyor.
Adım 4: Yetkilendirme Kodunu Değiştirmek
Şimdi, yetkilendirme kodunu bir erişim jetonu ile değiştireceksiniz. Bu, yetkilendirme sunucusunun jeton noktasına bir POST isteği gerektirir.
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
// Method to exchange authorization code for an access token
public static async Task<string> ExchangeAuthorizationCodeForAccessToken(string authorizationCode)
{
var tokenEndpoint = "https://authorization-server.com/token"; // Token endpoint
var postData = $"grant_type=authorization_code&code={authorizationCode}&redirect_uri={redirectUri}&client_id={clientId}&client_secret={clientSecret}";
var data = Encoding.ASCII.GetBytes(postData);
var request = WebRequest.Create(tokenEndpoint);
request.Method = "POST"; // Use post method to request the access token
request.ContentType = "application/x-www-form-urlencoded"; // Content type
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
// Extract and return the access token from the response
var token = ExtractAccessTokenFromResponse(responseString);
return token;
}
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
// Method to exchange authorization code for an access token
public static async Task<string> ExchangeAuthorizationCodeForAccessToken(string authorizationCode)
{
var tokenEndpoint = "https://authorization-server.com/token"; // Token endpoint
var postData = $"grant_type=authorization_code&code={authorizationCode}&redirect_uri={redirectUri}&client_id={clientId}&client_secret={clientSecret}";
var data = Encoding.ASCII.GetBytes(postData);
var request = WebRequest.Create(tokenEndpoint);
request.Method = "POST"; // Use post method to request the access token
request.ContentType = "application/x-www-form-urlencoded"; // Content type
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
// Extract and return the access token from the response
var token = ExtractAccessTokenFromResponse(responseString);
return token;
}
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Threading.Tasks
' Method to exchange authorization code for an access token
Public Shared Async Function ExchangeAuthorizationCodeForAccessToken(ByVal authorizationCode As String) As Task(Of String)
Dim tokenEndpoint = "https://authorization-server.com/token" ' Token endpoint
Dim postData = $"grant_type=authorization_code&code={authorizationCode}&redirect_uri={redirectUri}&client_id={clientId}&client_secret={clientSecret}"
Dim data = Encoding.ASCII.GetBytes(postData)
Dim request = WebRequest.Create(tokenEndpoint)
request.Method = "POST" ' Use post method to request the access token
request.ContentType = "application/x-www-form-urlencoded" ' Content type
request.ContentLength = data.Length
Using stream = request.GetRequestStream()
stream.Write(data, 0, data.Length)
End Using
Dim response = CType(request.GetResponse(), HttpWebResponse)
Dim responseString = (New StreamReader(response.GetResponseStream())).ReadToEnd()
' Extract and return the access token from the response
Dim token = ExtractAccessTokenFromResponse(responseString)
Return token
End Function
Bu işlev, gerekli veri ile jeton noktasına bir POST isteği gönderir ve yanıttan çıkarılan erişim jetonunu döndürür.
Adım 5: Yetkilendirilmiş İstekler Yapmak
Erişim jetonuyla, şimdi kimlik doğrulaması gerektiren kaynaklara isteklerde bulunabilirsiniz. İsteklerinize yetkilendirme başlığında bir Bearer jetonu olarak erişim jetonunu ekleyin.
using System.Net.Http;
using System.Threading.Tasks;
// Method to make authorized requests
public static async Task<string> MakeAuthorizedRequest(string accessToken, string apiUrl)
{
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
// Make the request to the API
var response = await httpClient.GetAsync(apiUrl);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
return responseString;
}
using System.Net.Http;
using System.Threading.Tasks;
// Method to make authorized requests
public static async Task<string> MakeAuthorizedRequest(string accessToken, string apiUrl)
{
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
// Make the request to the API
var response = await httpClient.GetAsync(apiUrl);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
return responseString;
}
Imports System.Net.Http
Imports System.Threading.Tasks
' Method to make authorized requests
Public Shared Async Function MakeAuthorizedRequest(ByVal accessToken As String, ByVal apiUrl As String) As Task(Of String)
Dim httpClient As New HttpClient()
httpClient.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken)
' Make the request to the API
Dim response = Await httpClient.GetAsync(apiUrl)
response.EnsureSuccessStatusCode()
Dim responseString = Await response.Content.ReadAsStringAsync()
Return responseString
End Function
IronPDF'ye Giriş

IronPDF, C# geliştiricileri için .NET uygulamaları içinde doğrudan PDF belgeleri oluşturma, işleme ve render etme olanakları sunan çok yönlü bir kütüphanedir. Bu güçlü araç, PDF dosyalarıyla çalışmayı basitleştirir, karmaşık belgeler oluşturmayı kolaylaştırır, HTML'yi zahmetsizce PDF'ye dönüştürür, PDF'lerden metin çıkarır ve çok daha fazlasını yapar. Basit bir API, geliştiricilerin derin PDF spesifikasyon bilgisine ihtiyaç duymadan uygulamalarına PDF işlevselliğini hızlıca entegre etmelerine olanak tanır.
IronPDF, HTML'yi PDF'ye dönüştürme konusunda mükemmeldir, düzenleri ve stilleri korunmuş tutar. Bu özellik, raporlar, faturalar ve belgeler için web içeriğinden PDF'ler oluşturmayı sağlar. HTML dosyalarını, URL'leri ve HTML dizgilerini PDF'ye dönüştürmeyi destekler.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer(); // Create an instance of the PDF renderer
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; // HTML content as string
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // Save the PDF
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // Save the PDF
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf"); // Save the PDF
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer(); // Create an instance of the PDF renderer
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; // HTML content as string
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // Save the PDF
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // Save the PDF
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf"); // Save the PDF
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer() ' Create an instance of the PDF renderer
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" ' HTML content as string
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' Save the PDF
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' Save the PDF
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf") ' Save the PDF
End Sub
End Class
Kod Örneği: Korumalı İçerikten PDF Oluşturma
Sadece kimliği doğrulanmış kullanıcılar için erişilebilir olan HTML içeriği döndüren bir uç noktanız olduğunu hayal edin. Bu HTML içeriğini bir PDF belgesine dönüştürmek için, OAuth2 üzerinden elde edilen erişim jetonunu kullanarak IronPDF'i kullanabilirsiniz.
Öncelikle bir erişim tokeni kullanarak korumalı HTML içeriği almak için bir yöntem tanımlayalım:
using System.Net.Http;
using System.Threading.Tasks;
// Method to fetch protected content
public static async Task<string> FetchProtectedContent(string accessToken, string apiUrl)
{
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
var response = await httpClient.GetAsync(apiUrl); // Make the request to the protected API
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync(); // Return the HTML content
}
using System.Net.Http;
using System.Threading.Tasks;
// Method to fetch protected content
public static async Task<string> FetchProtectedContent(string accessToken, string apiUrl)
{
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
var response = await httpClient.GetAsync(apiUrl); // Make the request to the protected API
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync(); // Return the HTML content
}
Imports System.Net.Http
Imports System.Threading.Tasks
' Method to fetch protected content
Public Shared Async Function FetchProtectedContent(ByVal accessToken As String, ByVal apiUrl As String) As Task(Of String)
Dim httpClient As New HttpClient()
httpClient.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken)
Dim response = Await httpClient.GetAsync(apiUrl) ' Make the request to the protected API
response.EnsureSuccessStatusCode()
Return Await response.Content.ReadAsStringAsync() ' Return the HTML content
End Function
Şimdi alınan HTML içeriğini bir PDF belgesine dönüştürmek için IronPDF kullanacağız:
using IronPdf;
// Method to convert HTML content to PDF
public static async Task ConvertHtmlToPdf(string accessToken, string apiUrl, string outputPdfPath)
{
// Fetch protected content using the access token
string htmlContent = await FetchProtectedContent(accessToken, apiUrl);
// Use IronPDF to convert the HTML content to a PDF document
var renderer = new IronPdf.HtmlToPdf();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the generated PDF to a file
pdf.SaveAs(outputPdfPath);
}
using IronPdf;
// Method to convert HTML content to PDF
public static async Task ConvertHtmlToPdf(string accessToken, string apiUrl, string outputPdfPath)
{
// Fetch protected content using the access token
string htmlContent = await FetchProtectedContent(accessToken, apiUrl);
// Use IronPDF to convert the HTML content to a PDF document
var renderer = new IronPdf.HtmlToPdf();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the generated PDF to a file
pdf.SaveAs(outputPdfPath);
}
Imports IronPdf
' Method to convert HTML content to PDF
Public Shared Async Function ConvertHtmlToPdf(ByVal accessToken As String, ByVal apiUrl As String, ByVal outputPdfPath As String) As Task
' Fetch protected content using the access token
Dim htmlContent As String = Await FetchProtectedContent(accessToken, apiUrl)
' Use IronPDF to convert the HTML content to a PDF document
Dim renderer = New IronPdf.HtmlToPdf()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Save the generated PDF to a file
pdf.SaveAs(outputPdfPath)
End Function
Yukarıdaki kodda FetchProtectedContent, bir OAuth2 erişim tokeni kullanarak korumalı bir kaynaktan HTML içeriğini almakla sorumludur. HTML içeriği alındıktan sonra, PDF belgesi oluşturmak için IronPDF'nin HtmlToPdf render motoruna gönderilir ve belirtilen yola kaydedilir.
Sonuç

Bu kılavuz, C# uygulamalarında OAuth2 kullanmanın temellerini tanıttı, ana kavramları, terminolojiyi ve basit bir uygulama örneğini kapsadı. OAuth2, kullanıcı kimlik doğrulaması ve yetkilendirmesini verimli bir şekilde ele alarak web uygulamalarının güvenliğinde hayati bir rol oynar. Bu örnek Yetkilendirme Kodu Akışını gösterse de, OAuth2, farklı türdeki uygulamalar için uygun diğer akışları da destekler.
IronPDF for Advanced PDF Manipulation entegrasyonu ile C# geliştiricileri, uygulamalarının yeteneklerini PDF oluşturma ve işleme dahil edecek şekilde genişletebilir, kimliği doğrulanmış kullanıcılara sunulan özellikleri zenginleştirebilir. IronPDF'nin kullanım kolaylığı ve kapsamlı PDF işleme yetenekleri, .NET geliştiricileri için projelerinde PDF dosyalarıyla çalışmayı kolaylaştıran mükemmel bir araç yapar. Tüm özellikleri keşfetmek için ücretsiz deneme sunar ve lisansları $799'den başlar.
Sıkça Sorulan Sorular
OAuth2, C# uygulamalarında güvenliği nasıl artırır?
OAuth2, kullanıcı kimlik doğrulaması ve yetkilendirmeyi güvenli bir şekilde sağlarken, kullanıcı kimlik bilgilerini doğrudan paylaşma gereksinimini ortadan kaldırır. Bu, kimlik bilgisi ifşası riskini azaltır ve korunan kaynaklara güvenli erişim sağlar.
Bir C# uygulamasında OAuth2'yi uygulamak için hangi adımlar izlenmelidir?
Bir C# uygulamasında OAuth2'yi uygulamak, müşteri kimlik bilgilerini ayarlamayı, kullanıcı yetkilendirme isteği yapmayı, yanıtları ele almayı, yetkilendirme kodlarını değiştirmeyi ve erişim jetonları kullanarak yetkili istekler yapmayı içerir.
IronPDF, korunan HTML içeriğinden PDF oluşturmak için nasıl kullanılabilir?
IronPDF, önce korunan içeriği almak için bir erişim jetonu kullanarak, ardından bu içeriği IronPDF'ın yeteneklerini kullanarak bir PDF belgeye dönüştürerek korunan HTML içeriğinden PDF oluşturmak için kullanılabilir.
OAuth2'de erişim jetonlarının rolü nedir?
OAuth2'de erişim jetonları, korunan kaynaklara istekleri yetkilendirmek ve kimlik doğrulamak için kullanılır. Bir istemci uygulaması bir erişim jetonu aldığında, kullanıcı adına kaynaklara erişmek için kullanabilir.
OAuth2'de Yetkilendirme Kodu Akışı nasıl çalışır?
OAuth2'de Yetkilendirme Kodu Akışı, kullanıcı onayı yoluyla bir yetkilendirme kodu elde etmeyi, ardından bu kodu bir erişim jetonuyla değiştirmeyi içerir. Bu akış güvenlidir ve tipik olarak müşteri sırlarının güvenli bir şekilde saklanabildiği web uygulamalarında kullanılır.
C#'ta bir HTML dizesinden PDF nasıl oluşturabilirsiniz?
C#'ta, IronPDF'ın HtmlToPdf yöntemini kullanarak bir HTML dizesinden PDF oluşturabilirsiniz. Bu yöntem, HTML dizesini bir PDF belgeye dönüştürür, ardından ihtiyaç duyulduğunda kaydedilebilir veya değiştirilebilir.
OAuth2'nin web uygulamalarında pratik kullanımları nelerdir?
OAuth2, web uygulamalarında güvenli kullanıcı kimlik doğrulaması ve yetkilendirme için kullanılır ve uygulamaların üçüncü taraf hizmetlerle kullanıcı verilerine güvenli bir şekilde erişmesine olanak tanır. Bu, üçüncü taraf hizmetlerin entegrasyonu ve kullanıcı gizliliğinin korunması için kritik öneme sahiptir.
IronPDF, C# uygulamalarında işlevselliği nasıl artırır?
IronPDF, C# uygulamalarında PDF belgeleri oluşturmak ve değiştirmek için araçlar sunarak işlevselliği artırır. HTML içerik, URL'ler ve HTML dizeleri veya dosyalarını PDF'lere dönüştürmek için kapsamlı PDF manipülasyon yetenekleri sunar.
C#'ta PDF oluşturmak için IronPDF kullanmanın faydası nedir?
C#'ta PDF oluşturmak için IronPDF kullanmanın faydası, HTML içeriğini doğru bir şekilde PDF'lere dönüştürme, belge düzenini ve stilini koruma ve güvenli içerik için OAuth2 tokenlarıyla içeriğe erişimi sağlamadır.




