Altbilgi içeriğine atla
IRONPDF KULLANARAK

Azure ve IronPDF Kullanarak HTML'i PDF'ye Nasıl Dönüştürulur

Azure Functions'da HTML'yi PDF'ye dönüştürmek, IronPDF'nin Chrome renderlama motoru ve doğru Azure yapılandırması gerektirir (en az B1 katmanı), böylece Azure'un sandbox kısıtlamalarını ve GDI+ sınırlamalarını ele alırken, basit dizgelerden JavaScript ağırlıklı sayfalara kadar her türlü HTML içeriğini piksel mükemmel PDF'lere dönüştürmenizi sağlar.

HTML'yi PDF'ye Dönüştürme Neden Öğrenmeye Değer?

Bulut ortamlarında HTML içeriğini PDF belgelerine dönüştürmek şaşırtıcı derecede zor olabilir. PDF üreticisini Azure Functions'a dağıtmayı denediyseniz, muhtemelen GDI+ veya sandbox sınırlamaları hakkında gizemli hatalarla karşılaştınız. İyi haber? IronPDF ve doğru ayarlar ile her türlü HTML içeriğini piksel mükemmel PDF dosyalarına dönüştürebilirsiniz.

Bu öğretici, IronPDF kullanarak Azure Functions'da üretime hazır bir HTML'den PDF'ye dönüştürücü nasıl dağıtılacağını gösterir. Basit HTML dizgelerinden JavaScript ağırlıklı web sayfalarına kadar her şeyi ele almayı öğrenirken, Azure'un benzersiz ortam kısıtlamalarını dolaşmayı öğreneceksiniz. İster basit makbuzlar ister karmaşık raporlar oluşturuyor olun, sonunda IronPDF ve Azure ile HTML'den PDF'ye dönüşüm ustalaşmış olacaksınız.

Şimdi IronPDF ile başlayın.
green arrow pointer

Azure'da HTML'den PDF'ye Dönüşüm Neden Zor?

PDF dönüşümüne dalmadan önce, bu görevin Azure'da neden geliştiricilere meydan okuduğunu anlayalım. Azure'un serverless ve uygulama hizmetleri, geleneksel PDF kütüphanelerinin bağımlı olduğu işlemleri kısıtlayan bir güvenlik sandbox'ı içinde çalışır:

  • Sınırlı GDI+ Erişimi: Windows Grafik çağrıları alt katmanlarda engellenmiştir.
  • Yazı Tipi Renderlama Sınırlamaları: Özel yazı tipleri ve SVG yazı tipleri sınırlamalarla karşı karşıya.
  • Bellek Kısıtlamaları: HTML'den PDF'ye dönüşüm önemli kaynaklar gerektirir.
  • Proses İzolasyonu: Tarayıcı motorlarını çalıştırmak özel izinler gerektirir.

Bu kısıtlamalar Azure'un Tüketim planında ve Ücretsiz/Paylaşılan katmanlarda en sıkıdır. Başarılı HTML'den PDF'ye dönüşüm bu yüzden en azından bir Azure Temel B1 katmanı veya Premium abonelik gerektirir. Bunlar, IronPDF'nin Chrome renderlama motorunun düzgün çalışması için gerekli izinleri ve kaynakları sağlar. IronPDF'nin Azure dağıtım kılavuzuna bakarak, Azure barındırma katmanları ve PDF renderlama performansı hakkında daha fazla bilgi edinin.

PDF Üretimi için Hangi Azure Dağıtım Seçeneği En İyisidir?

Üç dağıtım seçeneğiniz var (Windows, Linux veya Konteyner). Azure Function App Container önerilir, ancak her seçenek iyi çalışır.

Bugün, minimal yapılandırma ve IronPDF'nin renderlama motoru ile geliştirilmiş uyumluluk sağlayan, yalıtılmış bir ortam sunan konteyner yaklaşımına odaklanacağız. Azure Government Cloud veya Azure China gibi özel ortamlar için, aynı prensipler geçerlidir - sadece dağıtım uç noktalarınızı uygun şekilde ayarlayın.

IronPDF, Azure'da HTML'den PDF'ye Geçişte Neden Üstündür?

IronPDF, Chrome render motoru sayesinde Azure'da HTML'den PDF'ye dönüştürme yetenekleri ile öne çıkar. Bu sadece temel bir HTML ayrıştırıcısı değil—Google Chrome'un gücünü kullanan aynı teknoloji, PDF belgelerinizin modern bir tarayıcıda görüneceği şekilde görünmesini sağlar.

Chrome Render Motorunun En Önemli Özellikleri Nelerdir?

Chrome motoru, HTML'den PDF'ye dönüştürme için kritik faydalar sunar:

Bu, Bootstrap stilini, JavaScript çerçevelerini veya karmaşık görselleştirmeleri içeren herhangi bir modern web sayfasını alıp PDF'ye dönüştürebileceğiniz anlamına gelir, uyumluluk sorunları olmadan. IronPDF, Azure'un sınırlı ortamında başsız bir Chrome örneği çalıştırmayı yönetir. IronPDF'nin Chrome render yetenekleri ve piksel mükemmelliğinde PDF renderleme hakkında daha fazla bilgi edinin.

Microsoft Azure Ortamınızı HTML'den PDF'ye Ayarlamak Nasıl Yapılır?

IronPDF kullanarak HTML'den PDF'ye dönüştürme için optimize edilmiş bir Azure Fonksiyon Uygulaması kurulumuna göz atalım.

Başlamadan Önce Hangi Ön Koşullara İhtiyacım Var?

Başlamadan önce, aşağıdakilerin emin olun:

Azure Functions içindeki PDF oluşturma için özel kurulum talimatları için IronPDF'nin Azure Functions eğitimine bakın.

Azure Fonksiyon Uygulaması Nasıl Oluşturulur?

  1. Azure Portal'a gidin ve "Bir kaynak oluştur" düğmesine tıklayın
  2. "Fonksiyon Uygulaması"nı arayın ve "Oluştur"a tıklayın
  3. Temel bilgileri yapılandırın:

    1. Barındırma Seçeneği Seçin: İhtiyaçlarınıza uygun olanı seçin
    2. Abonelik: Azure aboneliğinizi seçin
    3. Kaynak Grubu: Yeni oluşturun veya mevcut olanı seçin
    4. Fonksiyon Uygulaması Adı: Eşsiz bir ad seçin
    5. Yayınla: "Container"'ı seçin
    6. Bölge: Tercih ettiğiniz konumu seçin
  4. Barındırma planını yapılandırın:

    1. Azure Uygulama Hizmet Planı altında "Yeni oluştur"a tıklayın
    2. Fiyatlandırma Katmanı: En az B1 (Temel) veya daha yüksek birini seçin
  5. Hatırlayın: Ücretsiz, Paylaşılan ve Tüketim planları PDF renderleme için uygun değildir
  6. Fonksiyon Uygulamanızı gözden geçirin ve oluşturun

IronPDF'yi Projemde Nasıl Yüklerim?

İlk olarak, Visual Studio'da yeni bir Azure Functions projesi oluşturun (veya mevcut birini yükleyin) ve IronPDF paketini ekleyin:

Install-Package IronPdf  #For Windows Deployment
Install-Package IronPdf  #For Windows Deployment
SHELL
Install-Package IronPdf.Linux  #For Docker Container deployment (recommended)
Install-Package IronPdf.Linux  #For Docker Container deployment (recommended)
SHELL

IronPDF kurulum kılavuzu için NuGet Paketleri yapılandırması ve platforma özgü dikkate alınması gereken noktaları içeren ayrıntılı kurulum talimatları.

Azure için Hangi Yapılandırma Ayarları Önemlidir?

Fonksiyon Uygulamanızın .cs dosyasını optimal HTML'den PDF'ye dönüştürme için yapılandırın:

using IronPdf;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
public class HtmlToPdfFunction
{
    private readonly ILogger _logger;
    public HtmlToPdfFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<HtmlToPdfFunction>();
        // Configure IronPDF for Azure
        ConfigureIronPdf();
    }
    private void ConfigureIronPdf()
    {
        // Set your license key (get a trial key from ___PROTECTED_URL_132___
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        // Essential Azure configurations
        IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
        IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
        // Optional: Enable logging for troubleshooting
        IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
    }
}
using IronPdf;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
public class HtmlToPdfFunction
{
    private readonly ILogger _logger;
    public HtmlToPdfFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<HtmlToPdfFunction>();
        // Configure IronPDF for Azure
        ConfigureIronPdf();
    }
    private void ConfigureIronPdf()
    {
        // Set your license key (get a trial key from ___PROTECTED_URL_132___
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        // Essential Azure configurations
        IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
        IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
        // Optional: Enable logging for troubleshooting
        IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
    }
}
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
Imports Microsoft.Extensions.Logging

Public Class HtmlToPdfFunction
    Private ReadOnly _logger As ILogger

    Public Sub New(loggerFactory As ILoggerFactory)
        _logger = loggerFactory.CreateLogger(Of HtmlToPdfFunction)()
        ' Configure IronPDF for Azure
        ConfigureIronPdf()
    End Sub

    Private Sub ConfigureIronPdf()
        ' Set your license key (get a trial key from ___PROTECTED_URL_132___
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
        ' Essential Azure configurations
        IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
        IronPdf.Installation.CustomDeploymentDirectory = "/tmp"
        ' Optional: Enable logging for troubleshooting
        IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
    End Sub
End Class
$vbLabelText   $csharpLabel

HTML Dizgeliğini PDF'ye Nasıl Dönüştürebilirim?

En yaygın senaryodan başlayalım: HTML dizgelerini doğrudan PDF'ye dönüştürme. Bu yaklaşım, faturalar, raporlar veya onay e-postaları gibi dinamik olarak üretilmiş içerikler için iyi çalışır.

Temel HTML Dizgeliği Dönüşümünü Nasıl Yapabilirim?

[Function("ConvertHtmlToPdf")]
public async Task<HttpResponseData> ConvertHtmlToPdf(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
{
    _logger.LogInformation("Starting HTML to PDF conversion");
    try
    {
        // Simple HTML invoice example
        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <meta charset='UTF-8'>
                <style>
                    body { font-family: Arial, sans-serif; margin: 40px; }
                    .header { color: #333; border-bottom: 2px solid #0066cc; }
                    .invoice-details { margin: 20px 0; }
                    table { width: 100%; border-collapse: collapse; }
                    th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
                    .total { font-weight: bold; font-size: 1.2em; }
                </style>
            </head>
            <body>
                <div class='header'>
                    <h1>Invoice #12345</h1>
                    <p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                </div>
                <div class='invoice-details'>
                    <table>
                        <tr>
                            <th>Item</th>
                            <th>Quantity</th>
                            <th>Price</th>
                        </tr>
                        <tr>
                            <td>Professional Services</td>
                            <td>10 hours</td>
                            <td>$1,000.00</td>
                        </tr>
                        <tr>
                            <td colspan='2' class='total'>Total</td>
                            <td class='total'>$1,000.00</td>
                        </tr>
                    </table>
                </div>
            </body>
            </html>";
        // Create Chrome renderer
        var renderer = new ChromePdfRenderer();
        // Configure rendering options
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 25;
        renderer.RenderingOptions.MarginBottom = 25;
        renderer.RenderingOptions.MarginLeft = 25;
        renderer.RenderingOptions.MarginRight = 25;
        // Convert HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Return PDF as response
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        response.Headers.Add("Content-Disposition", "attachment; filename=invoice.pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        _logger.LogInformation("PDF generated successfully");
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error generating PDF");
        var errorResponse = req.CreateResponse(HttpStatusCode.InternalServerError);
        await errorResponse.WriteStringAsync($"Error: {ex.Message}");
        return errorResponse;
    }
}
[Function("ConvertHtmlToPdf")]
public async Task<HttpResponseData> ConvertHtmlToPdf(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
{
    _logger.LogInformation("Starting HTML to PDF conversion");
    try
    {
        // Simple HTML invoice example
        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <meta charset='UTF-8'>
                <style>
                    body { font-family: Arial, sans-serif; margin: 40px; }
                    .header { color: #333; border-bottom: 2px solid #0066cc; }
                    .invoice-details { margin: 20px 0; }
                    table { width: 100%; border-collapse: collapse; }
                    th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
                    .total { font-weight: bold; font-size: 1.2em; }
                </style>
            </head>
            <body>
                <div class='header'>
                    <h1>Invoice #12345</h1>
                    <p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                </div>
                <div class='invoice-details'>
                    <table>
                        <tr>
                            <th>Item</th>
                            <th>Quantity</th>
                            <th>Price</th>
                        </tr>
                        <tr>
                            <td>Professional Services</td>
                            <td>10 hours</td>
                            <td>$1,000.00</td>
                        </tr>
                        <tr>
                            <td colspan='2' class='total'>Total</td>
                            <td class='total'>$1,000.00</td>
                        </tr>
                    </table>
                </div>
            </body>
            </html>";
        // Create Chrome renderer
        var renderer = new ChromePdfRenderer();
        // Configure rendering options
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 25;
        renderer.RenderingOptions.MarginBottom = 25;
        renderer.RenderingOptions.MarginLeft = 25;
        renderer.RenderingOptions.MarginRight = 25;
        // Convert HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Return PDF as response
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        response.Headers.Add("Content-Disposition", "attachment; filename=invoice.pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        _logger.LogInformation("PDF generated successfully");
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error generating PDF");
        var errorResponse = req.CreateResponse(HttpStatusCode.InternalServerError);
        await errorResponse.WriteStringAsync($"Error: {ex.Message}");
        return errorResponse;
    }
}
Imports System
Imports System.Net
Imports System.Threading.Tasks
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
Imports IronPdf

<Function("ConvertHtmlToPdf")>
Public Class ConvertHtmlToPdfFunction
    Private ReadOnly _logger As ILogger

    Public Sub New(logger As ILogger)
        _logger = logger
    End Sub

    Public Async Function ConvertHtmlToPdf(
        <HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
        executionContext As FunctionContext) As Task(Of HttpResponseData)

        _logger.LogInformation("Starting HTML to PDF conversion")
        Try
            ' Simple HTML invoice example
            Dim htmlContent As String = "
                <!DOCTYPE html>
                <html>
                <head>
                    <meta charset='UTF-8'>
                    <style>
                        body { font-family: Arial, sans-serif; margin: 40px; }
                        .header { color: #333; border-bottom: 2px solid #0066cc; }
                        .invoice-details { margin: 20px 0; }
                        table { width: 100%; border-collapse: collapse; }
                        th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
                        .total { font-weight: bold; font-size: 1.2em; }
                    </style>
                </head>
                <body>
                    <div class='header'>
                        <h1>Invoice #12345</h1>
                        <p>Date: " & DateTime.Now.ToString("yyyy-MM-dd") & "</p>
                    </div>
                    <div class='invoice-details'>
                        <table>
                            <tr>
                                <th>Item</th>
                                <th>Quantity</th>
                                <th>Price</th>
                            </tr>
                            <tr>
                                <td>Professional Services</td>
                                <td>10 hours</td>
                                <td>$1,000.00</td>
                            </tr>
                            <tr>
                                <td colspan='2' class='total'>Total</td>
                                <td class='total'>$1,000.00</td>
                            </tr>
                        </table>
                    </div>
                </body>
                </html>"

            ' Create Chrome renderer
            Dim renderer As New ChromePdfRenderer()
            ' Configure rendering options
            renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
            renderer.RenderingOptions.MarginTop = 25
            renderer.RenderingOptions.MarginBottom = 25
            renderer.RenderingOptions.MarginLeft = 25
            renderer.RenderingOptions.MarginRight = 25
            ' Convert HTML to PDF
            Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
            ' Return PDF as response
            Dim response = req.CreateResponse(HttpStatusCode.OK)
            response.Headers.Add("Content-Type", "application/pdf")
            response.Headers.Add("Content-Disposition", "attachment; filename=invoice.pdf")
            Await response.Body.WriteAsync(pdf.BinaryData)
            _logger.LogInformation("PDF generated successfully")
            Return response
        Catch ex As Exception
            _logger.LogError(ex, "Error generating PDF")
            Dim errorResponse = req.CreateResponse(HttpStatusCode.InternalServerError)
            Await errorResponse.WriteStringAsync($"Error: {ex.Message}")
            Return errorResponse
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

Bu, verilen HTML dizesini alır ve RenderingOptions sınıfını kullanarak yapılandırdığımız özel işleme seçenekleri ile tam bir PDF belgesine dönüştürür.

PDF Çıktısı Nasıl Görünür?

PDF viewer displaying a simple invoice (#12345) with one line item for 10 hours of professional services totaling $1,000

URL'leri PDF'ye Nasıl Dönüştürebilirim?

Mevcut web sayfaları veya karmaşık uygulamalar için, URL'leri doğrudan dönüştürebilirsiniz:

[Function("ConvertUrlToPdf")]
public async Task<HttpResponseData> ConvertUrlToPdf(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
{
    var requestBody = await req.ReadAsStringAsync();
    var urlRequest = JsonSerializer.Deserialize<UrlRequest>(requestBody);
    try
    {
        var renderer = new ChromePdfRenderer();
        // Configure for web page rendering
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
        // Enable JavaScript execution (important for dynamic content)
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS to execute
        // Convert URL to PDF
        var pdf = renderer.RenderUrlAsPdf(urlRequest.Url);
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error converting URL to PDF");
        throw;
    }
}
public class UrlRequest
{
    public string Url { get; set; }
}
[Function("ConvertUrlToPdf")]
public async Task<HttpResponseData> ConvertUrlToPdf(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
{
    var requestBody = await req.ReadAsStringAsync();
    var urlRequest = JsonSerializer.Deserialize<UrlRequest>(requestBody);
    try
    {
        var renderer = new ChromePdfRenderer();
        // Configure for web page rendering
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
        // Enable JavaScript execution (important for dynamic content)
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS to execute
        // Convert URL to PDF
        var pdf = renderer.RenderUrlAsPdf(urlRequest.Url);
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error converting URL to PDF");
        throw;
    }
}
public class UrlRequest
{
    public string Url { get; set; }
}
Imports System
Imports System.Net
Imports System.Text.Json
Imports System.Threading.Tasks
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
Imports Microsoft.Extensions.Logging

<Function("ConvertUrlToPdf")>
Public Class ConvertUrlToPdfFunction
    Private ReadOnly _logger As ILogger

    Public Sub New(logger As ILogger(Of ConvertUrlToPdfFunction))
        _logger = logger
    End Sub

    Public Async Function ConvertUrlToPdf(
        <HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
        executionContext As FunctionContext) As Task(Of HttpResponseData)

        Dim requestBody As String = Await req.ReadAsStringAsync()
        Dim urlRequest As UrlRequest = JsonSerializer.Deserialize(Of UrlRequest)(requestBody)
        Try
            Dim renderer As New ChromePdfRenderer()
            ' Configure for web page rendering
            renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
            renderer.RenderingOptions.PrintHtmlBackgrounds = True
            renderer.RenderingOptions.CreatePdfFormsFromHtml = True
            ' Enable JavaScript execution (important for dynamic content)
            renderer.RenderingOptions.EnableJavaScript = True
            renderer.RenderingOptions.RenderDelay = 1000 ' Wait for JS to execute
            ' Convert URL to PDF
            Dim pdf = renderer.RenderUrlAsPdf(urlRequest.Url)
            Dim response As HttpResponseData = req.CreateResponse(HttpStatusCode.OK)
            response.Headers.Add("Content-Type", "application/pdf")
            Await response.Body.WriteAsync(pdf.BinaryData)
            Return response
        Catch ex As Exception
            _logger.LogError(ex, "Error converting URL to PDF")
            Throw
        End Try
    End Function
End Class

Public Class UrlRequest
    Public Property Url As String
End Class
$vbLabelText   $csharpLabel

URL Dönüşüm Çıkışı Nasıl Görünür?

Apple'ın web sitesi ana sayfasının ekranı ikiye bölünmüş olarak iPhone 16 ailesi ürünlerini solda, Apple Watch Series 10'u ve takas ile Apple Card promosyonlarını sağda gösteriyor

Karmaşık HTML İçeriğini JavaScript ile Nasıl Ele Alabilirim?

Modern web uygulamaları, içerik renderleme için büyük ölçüde JavaScript'e dayanır. Çizelgeler, dinamik formlar veya tek sayfalık uygulamalar olsun, IronPDF'nin render motoru hepsini ele alır.

JavaScript-Ağır İçerikle Nasıl Çalışırım?

Bu örnek için bir HTML dosyası ile JavaScript içeriği alıp PDF'ye dönüştüreceğiz.

Analytics dashboard displaying company KPIs including $45,200 total revenue, monthly sales trends from January to June, weekly website traffic patterns, and top 4 products performance table

[Function("ConvertComplexHtmlToPdf")]
public async Task<HttpResponseData> ConvertComplexHtmlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
    try
    {
        // Load complex HTML from file
        // [USER TO PROVIDE: complex-dashboard.html with charts and JavaScript]
        string complexHtml = File.ReadAllText("Templates/complex-dashboard.html");
        var renderer = new ChromePdfRenderer();
        // JavaScript-specific configurations
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitFor.JavaScript(3000); // Wait 3 seconds for JS
        // Optional: Set the CSS media type for print or screen styles
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
        // Set viewport for responsive designs
        renderer.RenderingOptions.ViewPortWidth = 1920;
        renderer.RenderingOptions.ViewPortHeight = 1080;
        var pdf = renderer.RenderHtmlAsPdf(complexHtml);
        // Add metadata
        pdf.MetaData.Author = "Azure Function";
        pdf.MetaData.CreationDate = DateTime.Now;
        pdf.MetaData.Title = "Complex Dashboard Report";
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error with complex HTML conversion");
        throw;
    }
}
[Function("ConvertComplexHtmlToPdf")]
public async Task<HttpResponseData> ConvertComplexHtmlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
    try
    {
        // Load complex HTML from file
        // [USER TO PROVIDE: complex-dashboard.html with charts and JavaScript]
        string complexHtml = File.ReadAllText("Templates/complex-dashboard.html");
        var renderer = new ChromePdfRenderer();
        // JavaScript-specific configurations
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitFor.JavaScript(3000); // Wait 3 seconds for JS
        // Optional: Set the CSS media type for print or screen styles
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
        // Set viewport for responsive designs
        renderer.RenderingOptions.ViewPortWidth = 1920;
        renderer.RenderingOptions.ViewPortHeight = 1080;
        var pdf = renderer.RenderHtmlAsPdf(complexHtml);
        // Add metadata
        pdf.MetaData.Author = "Azure Function";
        pdf.MetaData.CreationDate = DateTime.Now;
        pdf.MetaData.Title = "Complex Dashboard Report";
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error with complex HTML conversion");
        throw;
    }
}
Imports System
Imports System.IO
Imports System.Net
Imports System.Threading.Tasks
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http

<Function("ConvertComplexHtmlToPdf")>
Public Class ConvertComplexHtmlToPdfFunction
    Private ReadOnly _logger As ILogger

    Public Sub New(loggerFactory As ILoggerFactory)
        _logger = loggerFactory.CreateLogger(Of ConvertComplexHtmlToPdfFunction)()
    End Sub

    Public Async Function ConvertComplexHtmlToPdf(
        <HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
        executionContext As FunctionContext) As Task(Of HttpResponseData)

        Try
            ' Load complex HTML from file
            ' [USER TO PROVIDE: complex-dashboard.html with charts and JavaScript]
            Dim complexHtml As String = File.ReadAllText("Templates/complex-dashboard.html")
            Dim renderer As New ChromePdfRenderer()
            ' JavaScript-specific configurations
            renderer.RenderingOptions.EnableJavaScript = True
            renderer.RenderingOptions.WaitFor.JavaScript(3000) ' Wait 3 seconds for JS
            ' Optional: Set the CSS media type for print or screen styles
            renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
            ' Set viewport for responsive designs
            renderer.RenderingOptions.ViewPortWidth = 1920
            renderer.RenderingOptions.ViewPortHeight = 1080
            Dim pdf = renderer.RenderHtmlAsPdf(complexHtml)
            ' Add metadata
            pdf.MetaData.Author = "Azure Function"
            pdf.MetaData.CreationDate = DateTime.Now
            pdf.MetaData.Title = "Complex Dashboard Report"
            Dim response = req.CreateResponse(HttpStatusCode.OK)
            response.Headers.Add("Content-Type", "application/pdf")
            Await response.Body.WriteAsync(pdf.BinaryData)
            Return response
        Catch ex As Exception
            _logger.LogError(ex, "Error with complex HTML conversion")
            Throw
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

JavaScript İçeriği PDF'de Nasıl Görünür?

Company Analytics Dashboard PDF displaying key business metrics including $45,200 total revenue, monthly sales trends, website traffic patterns, and top-performing products table

Grafik ve Veri Görselleştirmelerini Nasıl Yönetirsiniz?

Grafikler içeren bir HTML dosyasını şimdi dönüştürelim:

Bar chart displaying monthly sales data from January to June, showing an overall upward trend with values ranging from $1,200 to $2,400, with June having the highest sales

[Function("ConvertChartToPdf")]
    public async Task<HttpResponseData> ConvertChartToPdf(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
    {
        try
        {
            // Load chart template
            string chartHtml = File.ReadAllText("Templates/chart-template.html");
            // Replace placeholders with actual data
            var chartData = await GetChartDataAsync();
            chartHtml = chartHtml.Replace("{{CHART_DATA}}", JsonSerializer.Serialize(chartData));
            var renderer = new ChromePdfRenderer();
            // Ensure charts render completely
            renderer.RenderingOptions.EnableJavaScript = true;
            renderer.RenderingOptions.WaitFor.RenderDelay(2000);
            // Set paper orientation for charts
            renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
            var pdf = renderer.RenderHtmlAsPdf(chartHtml);
            var response = req.CreateResponse(HttpStatusCode.OK);
            response.Headers.Add("Content-Type", "application/pdf");
            await response.Body.WriteAsync(pdf.BinaryData);
            return response;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Chart conversion error");
            throw;
        }
    }
[Function("ConvertChartToPdf")]
    public async Task<HttpResponseData> ConvertChartToPdf(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
    {
        try
        {
            // Load chart template
            string chartHtml = File.ReadAllText("Templates/chart-template.html");
            // Replace placeholders with actual data
            var chartData = await GetChartDataAsync();
            chartHtml = chartHtml.Replace("{{CHART_DATA}}", JsonSerializer.Serialize(chartData));
            var renderer = new ChromePdfRenderer();
            // Ensure charts render completely
            renderer.RenderingOptions.EnableJavaScript = true;
            renderer.RenderingOptions.WaitFor.RenderDelay(2000);
            // Set paper orientation for charts
            renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
            var pdf = renderer.RenderHtmlAsPdf(chartHtml);
            var response = req.CreateResponse(HttpStatusCode.OK);
            response.Headers.Add("Content-Type", "application/pdf");
            await response.Body.WriteAsync(pdf.BinaryData);
            return response;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Chart conversion error");
            throw;
        }
    }
Imports System
Imports System.IO
Imports System.Net
Imports System.Text.Json
Imports System.Threading.Tasks
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http

<Function("ConvertChartToPdf")>
Public Class ChartConverter
    Private ReadOnly _logger As ILogger

    Public Sub New(logger As ILogger)
        _logger = logger
    End Sub

    Public Async Function ConvertChartToPdf(
        <HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
        executionContext As FunctionContext) As Task(Of HttpResponseData)

        Try
            ' Load chart template
            Dim chartHtml As String = File.ReadAllText("Templates/chart-template.html")
            ' Replace placeholders with actual data
            Dim chartData = Await GetChartDataAsync()
            chartHtml = chartHtml.Replace("{{CHART_DATA}}", JsonSerializer.Serialize(chartData))
            Dim renderer As New ChromePdfRenderer()
            ' Ensure charts render completely
            renderer.RenderingOptions.EnableJavaScript = True
            renderer.RenderingOptions.WaitFor.RenderDelay(2000)
            ' Set paper orientation for charts
            renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape
            Dim pdf = renderer.RenderHtmlAsPdf(chartHtml)
            Dim response = req.CreateResponse(HttpStatusCode.OK)
            response.Headers.Add("Content-Type", "application/pdf")
            Await response.Body.WriteAsync(pdf.BinaryData)
            Return response
        Catch ex As Exception
            _logger.LogError(ex, "Chart conversion error")
            Throw
        End Try
    End Function

    Private Async Function GetChartDataAsync() As Task(Of Object)
        ' Placeholder for actual implementation
        Return Await Task.FromResult(New Object())
    End Function
End Class
$vbLabelText   $csharpLabel

Grafik Görselleştirmesi PDF'de Nasıl Görünür?

PDF viewer displaying a Monthly Sales Report with a blue bar chart showing sales data from January to June, with values ranging from approximately $1,200 to $2,400

IronPDF, nihai PDF çıktısında orijinal JavaScript etkileşimini korur.

HTML Başlık ve Alt Bilgi Nasıl Eklenir?

Profesyonel PDF'ler genellikle tüm sayfalarda tutarlı başlıklar ve alt bilgi gerektirir. IronPDF, gelişmiş başlık ve alt bilgi seçenekleri için HTML tabanlı şablonları ile bunu basit hale getirir.

Dinamik Başlık ve Alt Bilgileri Nasıl Yaratırım?

[Function("ConvertWithHeaderFooter")]
public async Task<HttpResponseData> ConvertWithHeaderFooter(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
{
    try
    {
        string mainContent = @"
            <html>
            <body>
                <h1>Annual Report 2024</h1>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>

            </body>
            </html>";
        var renderer = new ChromePdfRenderer();
        // Configure margins to accommodate headers/footers
        renderer.RenderingOptions.MarginTop = 45;
        renderer.RenderingOptions.MarginBottom = 45;
        renderer.RenderingOptions.MarginLeft = 25;
        renderer.RenderingOptions.MarginRight = 25;
        // HTML Header with merge fields
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
        {
            Height = 35,
            HtmlFragment = @"
                <div style='text-align: center; font-size: 12px; padding: 10px;'>
                    <div style='float: left;'>Annual Report 2024</div>
                    <div style='float: right;'>Page {page} of {total-pages}</div>
                    <div style='clear: both;'></div>
                </div>",
            DrawDividerLine = true
        };
        // HTML Footer
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
        {
            Height = 30,
            HtmlFragment = @"
                <div style='text-align: center; font-size: 10px; padding: 5px;'>
                    <div>Generated on {date} at {time}</div>
                    <div>© 2024 Your Company. All rights reserved.</div>
                </div>",
            DrawDividerLine = true
        };
        var pdf = renderer.RenderHtmlAsPdf(mainContent);
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Header/Footer conversion error");
        throw;
    }
}
[Function("ConvertWithHeaderFooter")]
public async Task<HttpResponseData> ConvertWithHeaderFooter(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    FunctionContext executionContext)
{
    try
    {
        string mainContent = @"
            <html>
            <body>
                <h1>Annual Report 2024</h1>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>

            </body>
            </html>";
        var renderer = new ChromePdfRenderer();
        // Configure margins to accommodate headers/footers
        renderer.RenderingOptions.MarginTop = 45;
        renderer.RenderingOptions.MarginBottom = 45;
        renderer.RenderingOptions.MarginLeft = 25;
        renderer.RenderingOptions.MarginRight = 25;
        // HTML Header with merge fields
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
        {
            Height = 35,
            HtmlFragment = @"
                <div style='text-align: center; font-size: 12px; padding: 10px;'>
                    <div style='float: left;'>Annual Report 2024</div>
                    <div style='float: right;'>Page {page} of {total-pages}</div>
                    <div style='clear: both;'></div>
                </div>",
            DrawDividerLine = true
        };
        // HTML Footer
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
        {
            Height = 30,
            HtmlFragment = @"
                <div style='text-align: center; font-size: 10px; padding: 5px;'>
                    <div>Generated on {date} at {time}</div>
                    <div>© 2024 Your Company. All rights reserved.</div>
                </div>",
            DrawDividerLine = true
        };
        var pdf = renderer.RenderHtmlAsPdf(mainContent);
        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        await response.Body.WriteAsync(pdf.BinaryData);
        return response;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Header/Footer conversion error");
        throw;
    }
}
Imports System
Imports System.Net
Imports System.Threading.Tasks
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http

<Function("ConvertWithHeaderFooter")>
Public Class ConvertWithHeaderFooterFunction
    Private ReadOnly _logger As ILogger

    Public Sub New(loggerFactory As ILoggerFactory)
        _logger = loggerFactory.CreateLogger(Of ConvertWithHeaderFooterFunction)()
    End Sub

    Public Async Function ConvertWithHeaderFooter(
        <HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
        executionContext As FunctionContext) As Task(Of HttpResponseData)

        Try
            Dim mainContent As String = "
                <html>
                <body>
                    <h1>Annual Report 2024</h1>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>

                </body>
                </html>"
            Dim renderer As New ChromePdfRenderer()
            ' Configure margins to accommodate headers/footers
            renderer.RenderingOptions.MarginTop = 45
            renderer.RenderingOptions.MarginBottom = 45
            renderer.RenderingOptions.MarginLeft = 25
            renderer.RenderingOptions.MarginRight = 25
            ' HTML Header with merge fields
            renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
                .Height = 35,
                .HtmlFragment = "
                    <div style='text-align: center; font-size: 12px; padding: 10px;'>
                        <div style='float: left;'>Annual Report 2024</div>
                        <div style='float: right;'>Page {page} of {total-pages}</div>
                        <div style='clear: both;'></div>
                    </div>",
                .DrawDividerLine = True
            }
            ' HTML Footer
            renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
                .Height = 30,
                .HtmlFragment = "
                    <div style='text-align: center; font-size: 10px; padding: 5px;'>
                        <div>Generated on {date} at {time}</div>
                        <div>© 2024 Your Company. All rights reserved.</div>
                    </div>",
                .DrawDividerLine = True
            }
            Dim pdf = renderer.RenderHtmlAsPdf(mainContent)
            Dim response = req.CreateResponse(HttpStatusCode.OK)
            response.Headers.Add("Content-Type", "application/pdf")
            Await response.Body.WriteAsync(pdf.BinaryData)
            Return response
        Catch ex As Exception
            _logger.LogError(ex, "Header/Footer conversion error")
            Throw
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

Başlıklar PDF Çıktısını Nasıl İyileştirir?

Başlıklı (solda) ve başlıksız (sağda) PDF'ler arasındaki farkı yıllık rapor 2024 örneği ile gösteren görsel karşılaştırma

Farklı Sayfa Aralıkları için Özel Başlıklar Nasıl Uygulanır?

public async Task<PdfDocument> CreatePdfWithCustomHeaders(string htmlContent)
{
    var renderer = new ChromePdfRenderer();
    // First page header (cover page)
    renderer.RenderingOptions.FirstPageNumber = 0; // Cover page is page 0
    renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
    {
        Height = 50,
        HtmlFragment = "<div style='text-align: center; font-size: 24px;'>Company Logo</div>",
        DrawDividerLine = false
    };
    // Different header for content pages
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    // Apply different headers to specific pages after rendering
    for (int i = 1; i < pdf.PageCount; i++)
    {
        // Add page-specific content if needed
        pdf.StampHtml(i, @"
            <div style='position: absolute; top: 10px; right: 10px; font-size: 10px;'>
                Section " + GetSectionName(i) + @"
            </div>");
    }
    return pdf;
}
private string GetSectionName(int pageNumber)
{
    // Logic to determine section based on page number
    return pageNumber <= 5 ? "Introduction" : "Main Content";
}
public async Task<PdfDocument> CreatePdfWithCustomHeaders(string htmlContent)
{
    var renderer = new ChromePdfRenderer();
    // First page header (cover page)
    renderer.RenderingOptions.FirstPageNumber = 0; // Cover page is page 0
    renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
    {
        Height = 50,
        HtmlFragment = "<div style='text-align: center; font-size: 24px;'>Company Logo</div>",
        DrawDividerLine = false
    };
    // Different header for content pages
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    // Apply different headers to specific pages after rendering
    for (int i = 1; i < pdf.PageCount; i++)
    {
        // Add page-specific content if needed
        pdf.StampHtml(i, @"
            <div style='position: absolute; top: 10px; right: 10px; font-size: 10px;'>
                Section " + GetSectionName(i) + @"
            </div>");
    }
    return pdf;
}
private string GetSectionName(int pageNumber)
{
    // Logic to determine section based on page number
    return pageNumber <= 5 ? "Introduction" : "Main Content";
}
Imports System.Threading.Tasks

Public Class PdfCreator
    Public Async Function CreatePdfWithCustomHeaders(htmlContent As String) As Task(Of PdfDocument)
        Dim renderer As New ChromePdfRenderer()
        ' First page header (cover page)
        renderer.RenderingOptions.FirstPageNumber = 0 ' Cover page is page 0
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
            .Height = 50,
            .HtmlFragment = "<div style='text-align: center; font-size: 24px;'>Company Logo</div>",
            .DrawDividerLine = False
        }
        ' Different header for content pages
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        ' Apply different headers to specific pages after rendering
        For i As Integer = 1 To pdf.PageCount - 1
            ' Add page-specific content if needed
            pdf.StampHtml(i, "
                <div style='position: absolute; top: 10px; right: 10px; font-size: 10px;'>
                    Section " & GetSectionName(i) & "
                </div>")
        Next
        Return pdf
    End Function

    Private Function GetSectionName(pageNumber As Integer) As String
        ' Logic to determine section based on page number
        Return If(pageNumber <= 5, "Introduction", "Main Content")
    End Function
End Class
$vbLabelText   $csharpLabel

Bu, başlıklarınızı belirli PDF sayfa aralıklarına uygular.

Azure'da HTML'den PDF'ye Kullanım Durumları Nedir?

IronPDF'nin çok yönlülüğü onu birçok kullanım için uygun kılar:

  • Fatura Oluşturma: Dinamik veri içeren HTML şablonlarını dönüştürün.
  • Rapor Oluşturma: Görselleştirmeleri paylaşılabilir PDF'lere dönüştürün.
  • Sertifika Oluşturma: Kişiselleştirilmiş sertifikalar oluşturun.
  • Dokümantasyon İhraç: Çevrimiçi belgeleri, çevrimdışı PDF'lere dönüştürün.
  • E-posta Arşivleme: Biçimlendirme korunduğu halde HTML e-postalarını kaydedin.
  • Sözleşme Oluşturma: HTML şablonlarından belgeler oluşturun.
  • Pazarlama Materyalleri: Web tasarımlarını baskıya hazır PDF'lere dönüştürün.

Yaygın Azure'a Özgü Sorunlar Nasıl Ele Alınır?

Doğru yapılandırmaya rağmen, Azure'a özgü zorluklarla karşılaşabilirsiniz. İşte yaygın sorunlar ve çözümleri:

Yazı Tiplerim Neden Doğru Render Edilmiyor?

Problem: Özel fontlar doğru görüntülenmiyor veya sistem fontlarına geri dönüyor.

Çözümler: Azure'un paylaşılan barındırma katmanları, özel fontlar için gereken GDI + erişimini kısıtlar. En az B1 katmanını kullandığınızdan emin olun ve yazı tiplerini Base64 kodlama kullanarak yerleştirin.

string htmlWithEmbeddedFont = @"
    <style>
        @font-face {
            font-family: 'CustomFont';
            src: url(data:font/woff2;base64,YOUR_BASE64_FONT_HERE) format('woff2');
        }
        body { font-family: 'CustomFont', Arial, sans-serif; }
    </style>";
string htmlWithEmbeddedFont = @"
    <style>
        @font-face {
            font-family: 'CustomFont';
            src: url(data:font/woff2;base64,YOUR_BASE64_FONT_HERE) format('woff2');
        }
        body { font-family: 'CustomFont', Arial, sans-serif; }
    </style>";
Dim htmlWithEmbeddedFont As String = "
    <style>
        @font-face {
            font-family: 'CustomFont';
            src: url(data:font/woff2;base64,YOUR_BASE64_FONT_HERE) format('woff2');
        }
        body { font-family: 'CustomFont', Arial, sans-serif; }
    </style>"
$vbLabelText   $csharpLabel

Sürekli font sorunları için, IronPDF'nin font sorun giderme kılavuzuna bakın.

'Paket dosyasından çalıştırma' Yapılandırma Hatalarına Ne Sebep Olur?

Problem: IronPDF, 'Paket dosyasından çalıştırma' etkinleştirildiğinde bağımlılıkları yükleyemez.

Çözüm: Bu seçenek, IronPDF'nin gerekli dosyaları çıkarmasını engelleyen salt okunur bir ortam yaratır. Bu seçeneği yayın ayarlarınızda devre dışı bırakın veya bu senaryoyı daha iyi yöneten IronPdf.Slim paketini kullanın.

Bellek ve Zaman Aşımı Sorunları Nasıl Yönetilir?

Problem: Büyük HTML belgeleri zaman aşımına veya bellek istisnalarına neden oluyor.

Çözüm: Uygun zaman aşımı ve bellek ayarlarını yapılandırın:

// In your Function App configuration
renderer.RenderingOptions.Timeout = 120000; // 2 minutes
renderer.RenderingOptions.RequestContext = new RequestContext
{
    MaxResponseContentBufferSize = 100 * 1024 * 1024 // 100MB
};
// In your Function App configuration
renderer.RenderingOptions.Timeout = 120000; // 2 minutes
renderer.RenderingOptions.RequestContext = new RequestContext
{
    MaxResponseContentBufferSize = 100 * 1024 * 1024 // 100MB
};
' In your Function App configuration
renderer.RenderingOptions.Timeout = 120000 ' 2 minutes
renderer.RenderingOptions.RequestContext = New RequestContext With {
    .MaxResponseContentBufferSize = 100 * 1024 * 1024 ' 100MB
}
$vbLabelText   $csharpLabel

Azure Functions zaman aşımı yapılandırmaları için Microsoft'un zaman aşımı belgelerini gözden geçirin. Geliştiriciler ayrıca büyük belge işlemeyi yönetmek için Stack Overflow'un Azure Functions etiketinde çözümler paylaşıyor.

Azure'da HTML'den PDF'ye dönüştürmeye özel daha fazla sorun giderme senaryosu için IronPDF'nin Azure sorun giderme belgelerine bakın.

HTML'den PDF'ye Performansı Nasıl Optimize Ederim?

HTML'den PDF'ye dönüştürme, içeriğin karmaşıklığına bağlı olarak kaynak yoğun olabilir. Azure Functions için anahtar optimizasyon stratejileri burada:

Dinamik içerik için render gecikmelerini ne zaman kullanmalıyım?

JavaScript ağırlıklı sayfalarla çalışırken uygun render gecikmelerini yapılandırın:

renderer.RenderingOptions.WaitFor.RenderDelay = 500; // Simple pages
renderer.RenderingOptions.WaitFor.RenderDelay = 2000; // Complex JavaScript
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // Simple pages
renderer.RenderingOptions.WaitFor.RenderDelay = 2000; // Complex JavaScript
renderer.RenderingOptions.WaitFor.RenderDelay = 500 ' Simple pages
renderer.RenderingOptions.WaitFor.RenderDelay = 2000 ' Complex JavaScript
$vbLabelText   $csharpLabel

Hafızayı verimli bir şekilde nasıl yönetirim?

Yüksek hacimli senaryolar için kaynakları düzgün bir şekilde boşaltın:

using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        // Process PDF
        return pdf.BinaryData;
    }
}
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        // Process PDF
        return pdf.BinaryData;
    }
}
Imports System

Using renderer As New ChromePdfRenderer()
    Using pdf = renderer.RenderHtmlAsPdf(html)
        ' Process PDF
        Return pdf.BinaryData
    End Using
End Using
$vbLabelText   $csharpLabel

Hangi önbellekleme stratejilerini kullanmalıyım?

İçerik sık değişmiyorsa oluşturulan PDF'leri önbelleğe alın:

private static readonly MemoryCache _pdfCache = new MemoryCache(new MemoryCacheOptions
{
    SizeLimit = 100 // Limit cache size
});
public async Task<byte[]> GetCachedPdf(string cacheKey, string html)
{
    if (!_pdfCache.TryGetValue(cacheKey, out byte[] cachedPdf))
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        cachedPdf = pdf.BinaryData;
        _pdfCache.Set(cacheKey, cachedPdf, new MemoryCacheEntryOptions
        {
            Size = 1,
            SlidingExpiration = TimeSpan.FromMinutes(10)
        });
    }
    return cachedPdf;
}
private static readonly MemoryCache _pdfCache = new MemoryCache(new MemoryCacheOptions
{
    SizeLimit = 100 // Limit cache size
});
public async Task<byte[]> GetCachedPdf(string cacheKey, string html)
{
    if (!_pdfCache.TryGetValue(cacheKey, out byte[] cachedPdf))
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        cachedPdf = pdf.BinaryData;
        _pdfCache.Set(cacheKey, cachedPdf, new MemoryCacheEntryOptions
        {
            Size = 1,
            SlidingExpiration = TimeSpan.FromMinutes(10)
        });
    }
    return cachedPdf;
}
Imports System
Imports System.Threading.Tasks
Imports Microsoft.Extensions.Caching.Memory

Private Shared ReadOnly _pdfCache As New MemoryCache(New MemoryCacheOptions With {
    .SizeLimit = 100 ' Limit cache size
})

Public Async Function GetCachedPdf(cacheKey As String, html As String) As Task(Of Byte())
    Dim cachedPdf As Byte() = Nothing
    If Not _pdfCache.TryGetValue(cacheKey, cachedPdf) Then
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        cachedPdf = pdf.BinaryData
        _pdfCache.Set(cacheKey, cachedPdf, New MemoryCacheEntryOptions With {
            .Size = 1,
            .SlidingExpiration = TimeSpan.FromMinutes(10)
        })
    End If
    Return cachedPdf
End Function
$vbLabelText   $csharpLabel

Azure'da HTML'den PDF'e dönüşümün maliyeti nedir?

Azure'da HTML'den PDF'e dönüşüm iki maliyet bileşeni içerir:

Azure barındırma maliyetleri nelerdir?

  • Temel (B1) Katman: Hafif iş yükleri için uygun olan başlangıç seviyesi PDF oluşturma katmanı
  • Standart (S1) Katman: Düzenli PDF oluşturma için daha iyi performans
  • Premium (P1V2) Katman: Yüksek hacimli veya karmaşık PDF işlemleri için önerilir

Fiyatlandırma bölgeye göre değişir ve zamanla değişiklik gösterir. İhtiyaçlarınız için en iyi katmanı seçmek üzere bu IronPDF kılavuzuna bakın.

IronPDF lisanslama seçenekleri nelerdir?

IronPDF, e-posta desteğinin ve 30 günlük para iade garantisinin de dahil olduğu, tek bir geliştiriciden sınırsız ekip boyutlarına kadar değişen esnek süresiz lisanslama seçenekleri sunar

IronPDF Lisanslama

IronPDF çeşitli lisanslama seçenekleri sunar:

  • Deneme Lisansı: Test için 30 günlük ücretsiz deneme
  • Lite License: Tek geliştirici, tek proje
  • Plus License: Birden fazla proje ile küçük takımlar
  • Professional License: Yeniden dağıtım hakları ile büyük takımlar
  • Unlimited License: Kurum genelinde dağıtım

Ayrıntılı fiyatlandırma ve özellik karşılaştırmaları için IronPDF'ın lisanslama sayfasını ziyaret edin.

Maliyetleri nasıl optimize edebilirim?

  1. Önbellekleme uygulayın: Gereksiz PDF oluşturma işlemlerini azaltın
  2. Toplu işleme: Tek bir fonksiyon çalıştırmasında birden fazla PDF işleyin
  3. Kuyruk tabanlı işleme kullanın: Yükü zamana yayıp ölçekleme ihtiyaçlarını önleyin

Ne gibi güvenlik dikkate almaları yapmalıyım?

HTML'den PDF'e dönüşüm odaklanırken, hassas PDF dosyaları ile ilgilenirken güvenlik önemlidir. İstenmeyen müdahalelerden PDF içeriğini korumak için Azure Functions güvence altına almayı öğrenin:

Başarılı HTML'den PDF'e dönüşüm için anahtar çıkarımlar nelerdir?

Azure'da HTML'den PDF'e dönüşüm karmaşık olmak zorunda değil. IronPDF'ın Chrome render motoru ve doğru Azure yapılandırması ile herhangi bir HTML içeriğini profesyonel PDF'lere dönüştürebilirsiniz.

Azure'da başarılı HTML'den PDF'e dönüşüm için anahtar çıkarımlar:

IronPDF basit HTML'den PDF'e dönüşümün ötesine geçer. Bu makale, ileri düzey PDF manipülasyonu ve PDF görüntüleri desteği için yeteneklerini gösterdi. IronPDF, geliştirmekte olduğunuz herhangi bir uygulamaya, Console Uygulamaları ve .NET Core uygulamaları dahil, kolayca entegre olur.

Azure Uygulamalarınızda HTML'den PDF'e dönüştürmeye hazır mısınız?

!{--0100110001001001010000100101001001000001010100100101100101011111--}

IronPDF ücretsiz denemesini deneyin ve bugün Azure uygulamalarınızda güçlü özellikleri kullanarak HTML'den PDF'e dönüşüme başlayın!

Üretim dağıtımları için ihtiyaçlarınıza uygun planı bulmak üzere IronPDF'ın lisanslama seçeneklerini keşfedin. Kapsamlı dokümantasyon, duyarlı destek ve kesintisiz güncellemeler ile IronPDF, Azure Functions ve ötesinde güvenilir HTML'den PDF'e dönüşüm için ihtiyaç duyduğunuz her şeyi sağlar.

Sıkça Sorulan Sorular

Azure kullanarak HTML'den PDF'ye dönüştürmenin amacı nedir?

Azure kullanarak HTML'den PDF'ye dönüştürmek, geliştiricilere uygulamalar için belge oluşturma ve yönetiminin gerekli olduğu bulut tabanlı belgeler üretme imkânı sağlar.

IronPDF, Azure üzerinde HTML'den PDF'ye dönüşüm sürecini nasıl geliştirir?

IronPDF, karmaşık düzenleri ve stilleri desteklemek, profesyonel belge oluşturma için önemli olan sağlam özellikler sunarak dönüşüm sürecini geliştirir.

IronPDF kullanarak Azure üzerinde PDF oluşturmayı otomatikleştirmek mümkün mü?

Evet, IronPDF, bulut ortamlarında kesintisiz belge iş akışı sağlayarak ve manuel müdahaleyi azaltarak Azure ile entegre edilebilir.

Geliştiriciler için Azure üzerinde IronPDF kullanmanın ana faydaları nelerdir?

Ana faydalar arasında ölçeklenebilirlik, yüksek performans ve dinamik HTML içeriği işlemek için geliştirilmiş yetenekler yer alır, bu da büyük hacimli belge işleme görevlerini yönetmeyi geliştirir.

IronPDF, dönüşüm sürecinde karmaşık HTML düzenleri işleyebilir mi?

IronPDF, tüm unsurların PDF çıktısında doğru bir şekilde temsil edilmesini sağlayarak belge bütünlüğünü korumak için karmaşık HTML düzenlerini işlemek amacıyla tasarlanmıştır.

IronPDF'u Azure üzerine dağıtmak için gereksinimler nelerdir?

IronPDF'u Azure üzerine dağıtmak için aktif bir Azure hesabına sahip olmanız, Azure hizmetlerini anlamanız ve uygulamanızla entegre etmek için IronPDF kütüphanelerine erişim sağlamanız gereklidir.

IronPDF, bulut tabanlı PDF oluşturma güvenliğini nasıl sağlar?

IronPDF, Azure üzerinde PDF oluşturma sırasında hassas bilgileri korumak için şifreli bağlantılar ve güvenli veri işleme uygulamaları sağlayarak güvenliği sağlar.

IronPDF'u Azure üzerinde kullanırken PDF çıktısını özelleştirmek mümkün mü?

Evet, IronPDF, belgelerin görünüm ve işlevselliğini belirli gereksinimlere uygun hale getirmek için geliştiricilere geniş özelleştirme seçenekleri sunar.

IronPDF, Azure üzerinde dinamik web sayfalarını PDF'ye dönüştürmeyi destekliyor mu?

IronPDF, gerçek zamanlı veri ve içerik değişikliklerini yakalayan dinamik web sayfalarının dönüştürülmesini destekler, özellikle güncel belgeler oluşturmaya ihtiyaç duyan uygulamalar için faydalıdır.

IronPDF .NET 10 ile Azure üzerinde HTML’den PDF’ye dönüşüm yaparken uyumlu mudur?

Evet — IronPDF tamamen .NET 10 ile uyumludur, tüm HTML'den PDF'ye özelliklerinin Azure'da kesintisiz çalışmasını sağlar ve .NET 10'u, .NET 9, 8, 7, 6, Core, Standard ve Framework platformlarıyla birlikte destekler.

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

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara