.NET ile Azure'da HTML'den PDF'ye Nasıl Oluşturulur

Azure Function ile IronPDF Kullanarak HTML'den PDF'ye C# Nasıl Kullanılır

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. 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");
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın

    arrow pointer

Nasıl Rehberi

Projemi Nasıl Ayarlayabilirim?

Hangi IronPDF Paketini Yüklemeliyim?

İlk adım, IronPDF'i NuGet kullanarak yüklemektir:

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.

UyarıUygulama hizmet planı türü seçilmezse IronPDF, PDF belgelerini render etmeyi başaramayabilir.

Plan Türü açılır menüsünde Vurgulanan App service plan seçeneği ile Azure Function App oluşturma formu

"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.

Önerilen 'Paketten çalıştır' seçeneği işaretsiz olarak gösteren Azure Fonksiyonlar yayınlama diyalogu

.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.

  1. Linux'ta, Installation.LinuxAndDockerDependenciesAutoConfig=true; ayarını yapın ve libgdiplus'in makineye yüklendiğinden emin olun
  2. .NET 6 projeniz için .csproj dosyasına aşağıdakileri ekleyin:
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    XML
  3. Projenizde runtimeconfig.template.json adlı bir dosya oluşturun ve içine aşağıdakileri yazın:

    {
      "configProperties": {
        "System.Drawing.EnableUnixSupport": true
      }
    }
  4. Son olarak, 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'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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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

  1. Güvenilir performans için her zaman uygun barındırma katmanlarını kullanın - B1 veya üstü
  2. Loglamayı doğru yapılandırın - Üretim izleme için Azure Uygulama içgörülerini kullanın
  3. Hataları zarifçe yönetin - Geçici hatalar için tekrar deneme mantığını uygulayın
  4. HTML içeriğini optimize edin - Dış kaynakları minimize edin ve mümkün olduğunda base64 kodlu resimleri kullanın
  5. İyice test edin - Azure dağıtımından önce yerel olarak PDF oluşturmayı doğrulayın
  6. 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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,014,616 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.