Azure Function üzerinde IronPDF ile C# Kullanarak HTML'den PDF'ye Nasıl Dönüştürülür
IronPDF, MVC web siteleri ve Azure İşlevleri dâhil olmak üzere Azure platformlarında PDF belgeleri oluşturur, işler ve okur. Bu kılavuz, üretim ortamları için uygun yapılandırma ve optimizasyon ile Azure İşlevlerinde HTML'den PDF'ye dönüştürmenin nasıl uygulanacağını gösterir.
Azure İşlevlerini bir Docker Container içinde çalıştırıyorsanız, lütfen bunun yerine bu Azure Docker Linux Eğitim Kılavuzuna başvurun.
Hızlı Başlangıç: Azure üzerinde IronPDF ile HTML'den PDF'ye Dönüştürme
IronPDF kullanarak Azure uygulamalarınızda HTML'yi PDF'ye dönüştürmeye başlayın. Bu hızlı kılavuz, IronPDF'nin API yöntemlerini kullanarak bir URL'yi PDF belgesi olarak nasıl işleyebileceğinizi gösterir. Bu örnek, IronPDF'yi Azure çözümlerine entegre etmenin basitliğini gösterir. Format kaybı olmadan PDF oluşturmayı doğrudan denemek için örneği izleyin ve Azure projenizi hızlıca çalışır hale getirin.
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPdf yükleyin
PM > Install-Package IronPdf -
Bu kod parçasını kopyalayıp çalıştırın.
var pdf = new IronPdf.ChromePdfRenderer() .RenderHtmlAsPdf("<h1>Hello Azure!</h1>") .SaveAs("output-azure.pdf"); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronPDF kullanmaya başlayın ücretsiz deneme ile
Minimal Is Akisi (5 adimda)
- Azure'da PDF oluşturmak için C# kütüphanesini yükleyin
- Azure Basic B1 barındırma katmanını veya üstünü seçin
- Yayınlarken
Paket dosyasından çalıştırseçeneğinin işaretini kaldırın - Önerilen yapılandırma talimatlarını izleyin
- Azure kullanarak bir PDF oluşturucu oluşturmak için kod örneğini kullanın
Nasıl Yapılır Eğitimi
Projemi Nasıl Kurarım?
Hangi IronPDF Paketini Yüklemeliyim?
İlk adım, IronPDF'yi NuGet kullanarak yüklemektir:
- Windows tabanlı Azure Functions üzerinde
IronPdfpaketini kullanın - Windows için NuGet IronPdf paketi - Linux tabanlı Azure Functions üzerinde
IronPdf.Linuxpaketini kullanın - Linux için NuGet IronPdf paketi
Install-Package IronPdf
Alternatif olarak, Azure için doğrudan indirme paketi IronPDF doğrudan indirme paketi bağlantısını kullanarak .dll'i manuel olarak yükleyin.
Daha gelişmiş kurulum seçenekleri için kapsamlı NuGet Paketleri kılavuzumuzu inceleyin.
Hangi Azure Seçeneklerini Yapılandırmam Gerekiyor?
Hangi Azure Barındırma Seviyesini Seçmeliyim?
Azure Basic B1, render ihtiyaçları için gerekli olan minimum barındırma seviyesidir. Yüksek akış sistemleri oluşturuyorsanız, bu yükseltilmesi gerekebilir. B1 seviyesi, IronPDF'nin HTML'den PDF'ye dönüştürmesini sağlayan Chrome PDF Rendering Engine için yeterli kaynakları sağlar.
"Paket Dosyasından Çalıştır" Seçeneğini Neden İşaretlememeliyim?
Azure Functions uygulamanızı yayınlarken, Run from package file seçilmediğinden emin olun. Bu seçenek, IronPDF'nin gerekli çalışma zamanı bağımlılıklarını yürütme sırasında çıkarmasını engelleyen salt okunur bir dağıtım oluşturur.
.NET 6 için Nasıl Yapılandırırım?
Microsoft yakın zamanda, birçok eski API'nin çalışmasını bozarak .NET 6'dan görüntüleme kütüphanelerini kaldırdı. Bu nedenle, bu eski API çağrılarına izin vermek için projenizi yapılandırmanız gereklidir.
- Linux üzerinde,
Installation.LinuxAndDockerDependenciesAutoConfig=true;ayarlayın velibgdiplusmakineye kurulu olduğundan emin olun - .NET 6 projenizin .csproj dosyasına aşağıdakileri ekleyin:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles><GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>XML -
Projenizde
runtimeconfig.template.jsonadlı bir dosya oluşturun ve aşağıdakilerle doldurun:{ "configProperties": { "System.Drawing.EnableUnixSupport": true } } - Son olarak, .NET System.Drawing için Unix desteğini etkinleştirmek üzere programınızın başına aşağıdaki satırı ekleyin:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)$vbLabelText $csharpLabel
Ne Zaman Azure Üzerinde Docker Kullanmam Gerekir?
Azure üzerinde kontrol, SVG font erişimi ve performansı kontrol etme yeteneği elde etmenin bir yolu, Docker Container içinde IronPDF uygulamalarını ve Fonksiyonlarını kullanmaktır. Bu yaklaşım, çalışma ortamı üzerinde daha iyi kontrol sağlar ve birçok platforma özgü sınırlamaları ortadan kaldırır.
Linux ve Windows örnekleri için kapsamlı bir IronPDF Azure Docker öğreticimiz var ve okunmasını öneriyoruz.
Azure Function Kodu Nasıl Görünür?
Bu örnek, yerleşik Azure logger'a otomatik olarak günlük kayıtlarını çıkarır (bkz. ILogger log). Detaylı günlük yapılandırmaları için Özelleştirilmiş Günlük rehberimize bakın.
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log, ExecutionContext context)
{
log.LogInformation("Entered PrintPdf API function...");
// Apply license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Configure logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
IronPdf.Logging.Logger.EnableDebugging = false;
// Configure IronPdf settings
Installation.LinuxAndDockerDependenciesAutoConfig = false;
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
try
{
log.LogInformation("About to render pdf...");
// Create a renderer and render the URL as PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("Finished rendering pdf...");
// Return the rendered PDF as a file download
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering pdf");
}
return new OkObjectResult("OK");
}
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log, ExecutionContext context)
{
log.LogInformation("Entered PrintPdf API function...");
// Apply license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Configure logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
IronPdf.Logging.Logger.EnableDebugging = false;
// Configure IronPdf settings
Installation.LinuxAndDockerDependenciesAutoConfig = false;
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
try
{
log.LogInformation("About to render pdf...");
// Create a renderer and render the URL as PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("Finished rendering pdf...");
// Return the rendered PDF as a file download
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering pdf");
}
return new OkObjectResult("OK");
}
<FunctionName("PrintPdf")>
Public Shared Async Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger, ByVal context As ExecutionContext) As Task(Of IActionResult)
log.LogInformation("Entered PrintPdf API function...")
' Apply license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
' Configure logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom
IronPdf.Logging.Logger.CustomLogger = log
IronPdf.Logging.Logger.EnableDebugging = False
' Configure IronPdf settings
Installation.LinuxAndDockerDependenciesAutoConfig = False
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
Try
log.LogInformation("About to render pdf...")
' Create a renderer and render the URL as PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.google.com/")
log.LogInformation("Finished rendering pdf...")
' Return the rendered PDF as a file download
Return New FileContentResult(pdf.BinaryData, "application/pdf") With {.FileDownloadName = "google.pdf"}
Catch e As Exception
log.LogError(e, "Error while rendering pdf")
End Try
Return New OkObjectResult("OK")
End Function
Gelişmiş HTML Dize Render Örneği
Özel HTML ile CSS stilini içeren daha karmaşık senaryolar için, HTML String to PDF yeteneklerini kullanabilirsiniz:
[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("Processing HTML to PDF request");
// Read HTML content from request body
string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();
// Configure renderer with custom options
var renderer = new ChromePdfRenderer()
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 20,
MarginBottom = 20,
MarginLeft = 10,
MarginRight = 10,
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
PrintHtmlBackgrounds = true,
CreatePdfFormsFromHtml = true
}
};
try
{
// Add custom CSS
string styledHtml = $@"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; padding: 20px; }}
h1 {{ color: #2c3e50; }}
.highlight {{ background-color: #f1c40f; padding: 5px; }}
</style>
</head>
<body>
{htmlContent}
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(styledHtml);
return new FileContentResult(pdf.BinaryData, "application/pdf")
{
FileDownloadName = "styled-document.pdf"
};
}
catch (Exception ex)
{
log.LogError(ex, "Failed to render HTML to PDF");
return new BadRequestObjectResult("Error processing HTML content");
}
}
[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("Processing HTML to PDF request");
// Read HTML content from request body
string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();
// Configure renderer with custom options
var renderer = new ChromePdfRenderer()
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 20,
MarginBottom = 20,
MarginLeft = 10,
MarginRight = 10,
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
PrintHtmlBackgrounds = true,
CreatePdfFormsFromHtml = true
}
};
try
{
// Add custom CSS
string styledHtml = $@"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; padding: 20px; }}
h1 {{ color: #2c3e50; }}
.highlight {{ background-color: #f1c40f; padding: 5px; }}
</style>
</head>
<body>
{htmlContent}
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(styledHtml);
return new FileContentResult(pdf.BinaryData, "application/pdf")
{
FileDownloadName = "styled-document.pdf"
};
}
catch (Exception ex)
{
log.LogError(ex, "Failed to render HTML to PDF");
return new BadRequestObjectResult("Error processing HTML content");
}
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Azure.WebJobs
Imports Microsoft.Azure.WebJobs.Extensions.Http
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Extensions.Logging
Imports IronPdf
Public Module HtmlToPdfFunction
<FunctionName("RenderHtmlWithCss")>
Public Async Function RenderHtmlWithCss(
<HttpTrigger(AuthorizationLevel.Function, "post", Route:=Nothing)> req As HttpRequest,
log As ILogger) As Task(Of IActionResult)
log.LogInformation("Processing HTML to PDF request")
' Read HTML content from request body
Dim htmlContent As String = Await New StreamReader(req.Body).ReadToEndAsync()
' Configure renderer with custom options
Dim renderer As New ChromePdfRenderer() With {
.RenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 20,
.MarginBottom = 20,
.MarginLeft = 10,
.MarginRight = 10,
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
.PrintHtmlBackgrounds = True,
.CreatePdfFormsFromHtml = True
}
}
Try
' Add custom CSS
Dim styledHtml As String = $"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; padding: 20px; }}
h1 {{ color: #2c3e50; }}
.highlight {{ background-color: #f1c40f; padding: 5px; }}
</style>
</head>
<body>
{htmlContent}
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(styledHtml)
Return New FileContentResult(pdf.BinaryData, "application/pdf") With {
.FileDownloadName = "styled-document.pdf"
}
Catch ex As Exception
log.LogError(ex, "Failed to render HTML to PDF")
Return New BadRequestObjectResult("Error processing HTML content")
End Try
End Function
End Module
Azure Functions uygulamalarınızda lisansları yönetmek için Lisans Anahtarlarını Kullanma dokümantasyonumuza bakın.
Bilinen Sorunlar Nelerdir?
Neden SVG Fontları Paylaşımlı Barındırma Planlarında Render Edilmez?
Bir sınırlama, Azure hosting platformu genel bakışının daha ucuz paylaşımlı web uygulama katmanlarında Google Fonts gibi SVG fontlarını yükleyen sunucuları desteklememesidir. Bu, Windows GDI+ grafik nesnelerine erişimi engelleyen güvenlik kısıtlamaları nedeniyle olur.
Bu konuda en iyi font renderına ihtiyaç duyduğunuzda bir IronPDF için Windows veya Linux Docker Container rehberi veya belki de Azure üzerinde bir VPS kullanmanızı öneririz.
Azure Ücretsiz Katman Barındırması Neden Yavaş?
Azure ücretsiz ve paylaşımlı katmanlar, ve tüketim planı PDF işleme için uygun değildir. Azure B1 hosting/Premium planını öneriyoruz, biz de kendimiz bunu kullanıyoruz. HTML to PDF işlemi, herhangi bir bilgisayar için önemli bir 'iş' anlamına gelir - kendi makinenizde bir web sayfasının açılması ve render edilmesine benzer. Gerçek bir tarayıcı motoru kullanılır, bu nedenle uygun şekilde hazırlık yapmalı ve benzer güçteki bir masaüstü makinesiyle benzer render sürelerini beklemeliyiz.
Azure Fonksiyonlarını Yerelde Nasıl Hata Ayıklayabilirim?
Yerel geliştirme ve test için, Yerel Makinede Azure Fonksiyonları Projesi Hata Ayıklama rehberimize bakın. Bu, Azure'a dağıtmadan önce sorunları belirlemenize ve çözmenize yardımcı olur.
Azure Günlüklerini Nerede Bulabilirim?
PDF oluşturma sorunlarını giderirken Azure günlükleri çok değerlidir. IronPDF işlemlerine özel günlükleri nasıl erişeceğiniz ve yorumlamanız gerektiğine dair Azure Günlük Dosyaları rehberimize bakın.
Mühendislik Destek Talebi Nasıl Oluşturulur?
Bir talep bileti oluşturmak için IronPDF Mühendislik Destek Talebi Nasıl Yapılır rehberine bakın.
Üretim İçin En İyi Uygulamalar
- Her zaman uygun barındırma katmanlarını kullanın - güvenilir performans için
B1veya daha yüksek - Günlüğü doğru bir şekilde yapılandırın - Üretim izleme için Azure Application Insights kullanın
- Hataları düzgün bir şekilde yönetin - Geçici hatalar için tekrar deneme mantığı uygulayın
- HTML içeriğini optimize edin - Dış kaynakları en aza indirin ve mümkün olduğunda base64 kodlu görüntüler kullanın
- İyice test edin - Azure'a dağıtmadan önce yerel PDF oluşturmayı doğrulayın
- Kaynak kullanımını izleyin - Başarıyla ölçeklemek için bellek ve CPU tüketimini takip edin
Sıkça Sorulan Sorular
PDF oluşturma için gereken minimum Azure barındırma katmanı nedir?
IronPDF, PDF işleme ihtiyaçları için minimum barındırma düzeyi olarak Azure Basic B1 katmanını gerektirir. B1 katmanı, IronPDF'in HTML'den PDF'ye dönüştürme yeteneklerini destekleyen Chrome PDF İşleme Motoru için yeterli kaynak sağlar.
Windows tabanlı Azure İşlevleri için hangi paketi yüklemeliyim?
Windows tabanlı Azure İşlevleri için, NuGet'ten IronPdf paketini yükleyin. Bu paket, Windows ortamları için optimize edilmiş ve Chrome işleme motoru ile tam PDF oluşturma yetenekleri sağlar.
Azure İşlevlerinde HTML'yi PDF'ye nasıl dönüştürürüm?
IronPDF'in ChromePdfRenderer'ını kullanarak tek satır kodla HTML'yi PDF'ye dönüştürebilirsiniz. Basitçe yeni bir örnek oluşturun ve HTML içeriğinizle RenderHtmlAsPdf() çağrısı yapın, ardından sonuçlanan PDF dosyasını kaydedin.
Doğru App Service Plan türünü seçmezsem ne olur?
App Service Plan türünü seçmeme başarısızlığı, IronPDF'in PDF belgelerini işleyememesine neden olabilir. PDF işleme motorunun doğru çalışması için Azure barındırma ortamının düzgün yapılandırılması esastır.
'Paket dosyasından çalıştır' yayınlanırken neden işaretlenmemeli?
Azure İşlevler uygulamanızı yayınlarken, IronPDF'in Azure ortamında işleme bileşenlerine ve bağımlılıklarına düzgün erişebilmesi ve kullanabilmesi için 'paket dosyasından çalıştır' işaretlenmemelidir.
PDF oluşturma için Linux tabanlı Azure İşlevlerini kullanabilir miyim?
Evet, Linux tabanlı Azure İşlevleri için, NuGet'ten IronPdf.Linux paketini kullanın. Bu paket, Linux ortamları için özel olarak optimize edilmiştir ve aynı PDF oluşturma yeteneklerini sağlar.
PDF oluşturma için daha yüksek işlem hacmi gerektiğinde ne yapmalıyım?
Yüksek işlem hacimli sistemler için, B1 katmanının ötesine geçmeniz gerekebilir. IronPDF, Azure kaynaklarınızla ölçeklenir, yüksek performans katmanlarını seçerek artan PDF oluşturma taleplerini karşılayabilmenizi sağlar.

