.NET ile Azure'da HTML'yi PDF'ye nasıl dönüştürebilirim?

Azure Function üzerinde IronPDF ile C# Kullanarak HTML'den PDF'ye Nasıl Dönüştürülür

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

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.

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPdf yükleyin

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

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

    arrow pointer

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:

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.

UyarıUygulama hizmet planı Plan Türü'nü seçmemek, IronPdf'in PDF belgelerini render etmemesine neden olabilir.

Azure Function Uygulama oluşturma formunda Plan Türü açılır menüsünde Uygulama hizmet planı seçeneği vurgulanmıştır

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

Azure Functions yayın diyaloğu, işaretlenmemiş 'Paket dosyasından çalıştır (önerilir)' seçeneğini gösteriyor

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

  1. Linux üzerinde, Installation.LinuxAndDockerDependenciesAutoConfig=true; ayarlayın ve libgdiplus makineye kurulu olduğundan emin olun
  2. .NET 6 projenizin .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 aşağıdakilerle doldurun:

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

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

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

  1. Her zaman uygun barındırma katmanlarını kullanın - güvenilir performans için B1 veya daha yüksek
  2. Günlüğü doğru bir şekilde yapılandırın - Üretim izleme için Azure Application Insights kullanın
  3. Hataları düzgün bir şekilde yönetin - Geçici hatalar için tekrar deneme mantığı uygulayın
  4. 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
  5. İyice test edin - Azure'a dağıtmadan önce yerel PDF oluşturmayı doğrulayın
  6. 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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget Indirmeler 18,332,619 | Sürüm: 2026.4 yeni yayınlandı
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizin PDF olduğunu izleyin.