Azure Function ile IronPDF Kullanarak HTML'den PDF'ye C# Nasıl Kullanılır
IronPDF, Azure platformlarında MVC web siteleri ve Azure Fonksiyonları dahil PDF belgeleri oluşturabilir, manipüle edebilir ve okuyabilir. Bu kılavuz, uygun yapılandırma ve üretim ortamları için optimizasyon ile Azure Fonksiyonlarında HTML'den PDF'ye dönüştürme işlemini nasıl uygulayacağınızı gösterir.
Azure İşlevlerini Docker Container içinde çalıştırıyorsanız, lütfen yerine bu Azure Docker Linux Eğiticisine başvurun.
Hızlı Başlangıç: IronPDF ile Azure'da HTML'den PDF'ye Dönüştürme
IronPDF kullanarak Azure uygulamalarınızda HTML'den PDF'ye dönüştürmeye başlayın. Bu hızlı kılavuz, IronPDF'in API yöntemlerini kullanarak bir URL'yi PDF belgesi olarak nasıl işleneceğini gösterir. Bu örnek, IronPDF'in Azure çözümlerine PDF yeteneklerini entegre etmedeki basitliğini vurgular. Örneği takip ederek biçimlendirmeyi kaybetmeden PDF'ler oluşturun ve Azure projenizi hızlıca çalışır hale getirin.
-
IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package IronPdf -
Bu kod parçacığını kopyalayın ve çalıştırın.
var pdf = new IronPdf.ChromePdfRenderer() .RenderHtmlAsPdf("<h1>Hello Azure!</h1>") .SaveAs("output-azure.pdf"); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın
Asgari İş Akışı (5 adım)
- Azure'da PDF oluşturmak için C# kütüphanesini yükleyin
- Azure Temel B1 barındırma katmanını veya üstünü seçin
- Yayınlarken
paket dosyasından çalıştırseçeneğini işaretsiz bırakın - Önerilen konfigürasyon talimatlarını izleyin
- Azure'da PDF oluşturucu oluşturmak için kod örneğini kullanın
Nasıl Rehberi
Projemi Nasıl Ayarlayabilirim?
Hangi IronPDF Paketini Yüklemeliyim?
İlk adım, IronPDF'i NuGet kullanarak yüklemektir:
- Windows tabanlı Azure Functions'da
IronPdfpaketini kullanın - Windows için NuGet IronPDF paketi - Linux tabanlı Azure Functions'da
IronPdf.Linuxpaketini kullanın - Linux için NuGet IronPDF paketi
Install-Package IronPdf
Alternatif olarak, Azure için doğrudan IronPDF indirme paketi bağlantısını kullanarak .dll dosyasını manuel olarak yükleyin.
Daha gelişmiş yükleme seçenekleri için kapsamlı NuGet Paketleri kılavuzumuza göz atın.
Hangi Azure Seçeneklerini Yapılandırmalıyım?
Hangi Azure Hosting Katmanını Seçmeliyim?
Azure Basic B1, işleme ihtiyaçları için gereken minimum hosting seviyesidir. Eğer yüksek aktarım hızlı bir sistem oluşturuyorsanız, bu yükseltilmesi gerekebilir. B1 katmanı, IronPDF'in HTML'den PDF'e dönüştürme motorunu destekleyen Chrome PDF Render Motoru için yeterli kaynaklar sağlar.
"Paketten Çalıştır" Seçeneğini Neden İşaretlememeliyim?
Azure Functions uygulamanızı yayınlarken, Run from package file seçeneğinin seçili OLMADIĞINDAN emin olun. Bu seçenek, çalıştırma sırasında IronPDF'in gerekli çalışma zamanı bağımlılıklarını çıkartmasını engeller.
.NET 6 İçin Nasıl Yapılandırırım?
Microsoft yakın zamanda, birçok eski API'yi bozan görüntü kütüphanelerini .NET 6+'dan kaldırdı. Bu nedenle, bu eski API çağrılarına hala izin vermek için projenizi yapılandırmanız gereklidir.
- Linux'ta,
Installation.LinuxAndDockerDependenciesAutoConfig=true;ayarını yapın velibgdiplus'in makineye yüklendiğinden emin olun - .NET 6 projeniz için
.csprojdosyasına aşağıdakileri ekleyin:<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles><GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>XML -
Projenizde
runtimeconfig.template.jsonadlı bir dosya oluşturun ve içine aşağıdakileri yazın:{ "configProperties": { "System.Drawing.EnableUnixSupport": true } } - Son olarak,
System.Drawingiç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'da Docker Kullanmalıyım?
Azure'da kontrol kazanmanın bir yolu, SVG yazı tipi erişimi ve performansı kontrol kabiliyetini sağlamak için IronPDF uygulamalarını ve Fonksiyonlarını Docker Container'dan kullanmaktır. Bu yaklaşım, çalışma zamanı ortamı üzerinde daha iyi kontrol sağlar ve platforma özgü birçok sınırlamayı ortadan kaldırır.
Linux ve Windows örnekleri için kapsamlı bir IronPDF Azure Docker öğreticisi hazırız ve okunması önerilmektedir.
Azure Function Kodu Nasıl Görünür?
Bu örnek, günlük girişlerini otomatik olarak yerleşik Azure günlük kaydedicisine gönderir (bkz. ILogger log). Detaylı günlük yapılandırmaları için, Özelleştirilmiş Günlük tutma kılavuzumuza başvurun.
[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 Dizesi İşleme Örneği
CSS stillendirme ile özel HTML içeren daha karmaşık senaryolar için, HTML Dizesinden PDF'ye 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 Fonksiyonlarınızda lisans yönetimi için, Lisans Anahtarları Kullanımı dokümantasyonumuza başvurun.
Bilinen Sorunlar Nelerdir?
SVG Fontları Neden Paylaşılan Hosting Planlarında Render Edilmez?
Azure hosting platformu genel bakış, ucuz paylaşımlı web uygulama katmanlarında Google Fonts gibi sunucu yüklemelerini desteklemez. Bu, Windows GDI+ grafik nesnelerine erişimi kısıtlayan güvenlik kısıtlamalarından kaynaklanmaktadır.
IronPDF için Windows veya Linux Docker Container rehberimizi veya en iyi yazı tipi işleme gereksiniminiz olduğunda belki Azure üzerinde bir VPS kullanmayı öneriyoruz.
Neden Azure Ücretsiz Katman Hosting Yavaştır?
Azure ücretsiz ve paylaşılan katmanlar ile tüketim planı, PDF oluşturma için uygun değildir. Kendi kullandığınız Azure B1 barındırma/Premium planı öneririz. HTML to PDF süreci, herhangi bir bilgisayar için önemli bir 'iş'tir; bu, kendi makinenizde bir web sayfasını açıp görüntülemekle benzerdir. Gerçek bir tarayıcı motoru kullanıldığından, buna göre kaynak ayırmamız ve benzer güçteki bir masaüstü makinesine benzer görüntüleme süreleri beklememiz gerekir.
Azure Fonksiyonlarını Nasıl Yerel Olarak Hata Ayıklarım?
Yerel geliştirme ve test için, Yerel Makinede IronPDF ile Azure Fonksiyonları Projesini Hata Ayıklama kılavuzumuza başvurun. Bu, Azure'a dağıtmadan önce sorunları belirlemenize ve çözmenize yardımcı olur.
Azure Günlüklerini Nerede Bulabilirim?
PDF üretim sorunlarını giderirken, Azure günlükleri paha biçilmezdir. IronPDF işlemlerine özgü günlükleri erişmek ve yorumlamak için Azure Günlük Dosyaları kılavuzumuza göz atın.
Bir Teknik Destek Talebi Nasıl Oluşturabilirim?
Talep bileti oluşturmak için, IronPDF için Teknik Destek Talebi Nasıl Hazırlanır kılavuzumuza başvurun.
Üretim için En İyi Uygulamalar
- Güvenilir performans için her zaman uygun barındırma katmanlarını kullanın -
B1veya üstü - Loglamayı doğru yapılandırın - Üretim izleme için Azure Uygulama içgörülerini kullanın
- Hataları zarifçe yönetin - Geçici hatalar için tekrar deneme mantığını uygulayın
- HTML içeriğini optimize edin - Dış kaynakları minimize edin ve mümkün olduğunda base64 kodlu resimleri kullanın
- İyice test edin - Azure dağıtımından önce yerel olarak PDF oluşturmayı doğrulayın
- Kaynak kullanımını izleyin - Ölçeklemeyi uygun hale getirmek 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 gereken minimum barındırma seviyesi olarak Azure Basic B1 katmanı 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ştir ve Chrome işleme motoru ile tam PDF oluşturma yetenekleri sağlar.
Azure İşlevlerinde HTML'yi nasıl PDF'ye dönüştürürüm?
IronPDF'in ChromePdfRenderer'ını kullanarak, HTML'yi PDF'ye dönüştürmek için tek satırlık kod ile yapabilirsiniz. Sadece bir örnek oluşturun ve HTML içeriğinizle RenderHtmlAsPdf() çağrısı yapın, ardından sonuç PDF dosyasını kaydedin.
Doğru Uygulama Hizmeti Planı'nı seçmezsem ne olur?
Uygulama hizmet planı türünü seçmemek, IronPDF'in PDF belgelerini işleyememesine neden olabilir. Azure barındırma ortamının doğru yapılandırılması, PDF işleme motorunun düzgün çalışabilmesi için elzemdir.
'Paket dosyasından çalıştır' seçeneği yayınlarken neden işaretlenmemeli?
Azure İşlevleri uygulamanızı yayınlarken 'Paket dosyasından çalıştır' seçeneği işaretli olmamalıdır, böylece IronPDF, Azure ortamındaki işleme bileşenlerine ve bağımlılıklarına doğru erişip bunları kullanabilir.
Linux tabanlı Azure İşlevlerini PDF oluşturma için 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 throughput ihtiyacım olursa ne yapmalıyım?
Yüksek throughput sistemler için B1 katmanının ötesine geçmeniz gerekebilir. IronPDF, Azure kaynaklarınızla birlikte ölçeklenir, böylece daha yüksek performans katmanlarını seçerek artan PDF oluşturma taleplerini karşılamanıza olanak tanır.

