Altbilgi içeriğine atla
IRONPDF KULLANARAK

C# içinde PDF Dönüşümü (Geliştirici Eğitimi)

Azure İşlevlerinde HTML'yi PDF'ye dönüştürmek, IronPDF'nin Chrome işleme motoru ve doğru Azure yapılandırmasını gerektirir (en az B1 katmanı), basit dizgilerden yoğun JavaScript sayfalarına kadar her türlü HTML içeriğini piksel mükemmelliğindeki PDF'lere dönüştürmenizi sağlar ve Azure'un kumsal sınırlamalarını ve GDI+ eksikliklerini ele alır.

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

Cloud ortamlarında HTML içeriğini PDF belgelerine dönüştürmek şaşırtıcı derecede zor olabilir. PDF oluşturucuyu Azure İşlevlerine yerleştirmeyi denediyseniz, muhtemelen GDI+ veya sandbox sınırlamaları hakkında belirsiz hatalarla karşılaştınız. İyi haber? Doğru kurulumla birlikte IronPDF sayesinde, herhangi bir HTML içeriğini piksel mükemmelliğinde PDF dosyalarına dönüştürebilirsiniz.

Bu öğretici size IronPDF kullanarak bir üretime hazır HTML - PDF dönüştürücüyü Azure İşlevlerine nasıl dağıtacağınızı gösteriyor. Azure'un benzersiz ortam sınırlamalarını aşarken, basit HTML dizgilerinden yoğun JavaScript web sayfalarına kadar her şeyi nasıl ele alacağınızı öğreneceksiniz. İster basit fatura oluştururken ister karmaşık raporlar üretirken, sonunda IronPDF ile HTML - PDF dönüştürme ustalığı kazanacaksınız.

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

HTML - PDF Dönüştürme Azure'da Neden Zorlayıcı?

PDF dönüştürmeye dalış yapmadan önce, bu görevin Azure'daki geliştiricileri neden zorladığını anlayalım. Azure'un sunucusuz ve uygulama hizmetleri, geleneksel PDF kütüphanelerinin bağımlı olduğu işlemleri kısıtlayan bir güvenlik kumsalında çalışır:

  • Sınırlı GDI+ Erişimi: Alt katmanlarda Windows Grafik çağrıları engellenmiştir.
  • Font İşleme Sınırlamaları: Özel fontlar ve SVG fontları kısıtlamalarla karşılaşır.
  • Bellek Kısıtlamaları: HTML - PDF dönüştürme önemli kaynaklar gerektirir.
  • Süreç İzolasyon: Tarayıcı motorlarını çalıştırmak için özel izinler gerekir.

Bu sınırlamalar, Azure'un Tüketim planı ve Ücretsiz/Paylaşılan katmanlarında en katıdır. Başarılı bir HTML - PDF dönüştürme sağlamanın nedeni, en azından Azure Temel B1 katmanına veya Premium aboneliğe sahip olmaktan geçiyor. Bunlar, IronPDF'nin Chrome işleme motorunun düzgün çalışması için gerekli izinleri ve kaynakları sağlar. Azure barındırma katmanları ve PDF işleme performansı hakkında daha fazla bilgi için IronPDF'nin Azure dağıtım kılavuzunu kontrol edin.

PDF Üretimi için Hangi Azure Dağıtım Seçeneği En İyi Çalışır?

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

Bugün, minimal yapılandırma ve IronPDF'nin işleme motoruyla daha iyi uyumluluk sağlayan izole bir ortam sunan konteyner yaklaşımına odaklanacağız. Azure Government Cloud veya Azure China gibi özel ortamlar için, aynı prensipler geçerlidir — yalnızca dağıtım uç noktalarınızı uygun şekilde ayarlayın.

IronPDF Neden Azure'da HTML - PDF Konusunda Üstündür?

IronPDF, Azure'da HTML - PDF dönüştürme kabiliyetleri açısından Chrome işleme motoru sayesinde öne çıkıyor. Bu sadece temel bir HTML ayrıştırıcı değildir — Google Chrome'u güçlendiren aynı teknoloji sayesinde, PDF belgeleriniz modern bir tarayıcıda göründüğü gibi görünecektir.

Chrome İşleme Motorunun En Önemli Özellikleri Nelerdir?

Chrome motoru, HTML - PDF dönüştürme için kritik faydalar sağlar:

Bu, Bootstrap stilleri, JavaScript çerçeveleri veya karmaşık görselleştirmeler ile tam modern bir web sayfasını alabileceğiniz ve uyumluluk sorunları yaşamadan PDF'ye dönüştürebileceğiniz anlamına gelir. IronPDF, Azure'un kısıtlanmış ortamında bir Headless Chrome örneğini çalıştırmayı ele alır. IronPDF'nin Chrome işleme kabiliyetleri ve piksel mükemmelliğinde PDF işleme hakkında daha fazla bilgi edinin.

HTML - PDF için Microsoft Azure Ortamı Nasıl Kurulur?

IronPDF kullanarak HTML - PDF dönüştürme için optimize edilmiş bir Azure Function App ayarlamaya birlikte bakalım.

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

Başlamadan önce, sahip olduğunuzdan emin olun:

Azure İşlevleri'nde PDF üretimi için özel kurulum talimatları için, IronPDF'nin Azure Functions öğreticisine bakın.

Azure Function App Nasıl Oluşturulur?

  1. Azure Portal'a gidin ve "Bir kaynak oluştur"a tıklayın
  2. "Function App" arayın ve "Oluştur" a tıklayın
  3. Temelleri yapılandırın:

    1. Barındırma Seçeneğini Seçin: İhtiyacınıza uygun olanı seçin
    2. Abonelik: Azure aboneliğinizi seçin
    3. Kaynak Grubu: Yenisi yaratın veya mevcut olanı seçin
    4. Function App Adı: Eşsiz bir ad seçin
    5. Yayınla: "Konteyner" seçin
    6. Konum: Tercih ettiğiniz konumu seçin
  4. Barındırma planını yapılandırın:

    1. Azure App Service Plan altında "Yeni oluştur"a tıklayın
    2. Fiyatlandırma Katmanı: En az B1 (Temel) veya daha yükseğini seçin
  5. Unutmayın: Ücretsiz, Paylaşılan ve Tüketim planları PDF işleme için çalışmaz
  6. Function App'inizi inceleyin ve oluşturun

IronPDF'i Projemde Nasıl Kurarım?

Öncelikle, Visual Studio'da yeni bir Azure Functions projesi oluşturun (veya mevcut birini yükleyin) ve IronPDF paketini ekleyin.

Windows Dağıtımı için:

Install-Package IronPdf

Docker Container Dağıtımı için (önerilir)

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

Ayrıntılı kurulum talimatları, NuGet Paketleri yapılandırması ve platforma özgü hususlar ile ilgili IronPDF kurulum kılavuzunu ziyaret edin.

Azure için Hangi Yapılandırma Ayarları Temeldir?

HTML - PDF dönüştürme için ideal şekilde Function App .cs dosyanızı 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 Dizgileri PDF'ye Nasıl Dönüştürülür?

Gelin en yaygın senaryoyla başlayalım: HTML dizgilerini doğrudan PDF'ye dönüştürme. Bu yaklaşım, dinamik olarak üretilen içerikler için iyi çalışır, örneğin faturalar, raporlar veya onay emailleri.

Temel HTML Dizgi Dönüşümü Nasıl Yapılır?

[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 PdfConverter
    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 dizgisini alır ve yapılandırdığımız RenderingOptions sınıfı kullanarak PDF belgesi haline getirir ve özel render seçenekleri ile tamamlar.

PDF Çıkışı 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'ler Nasıl PDF'ye Dönüştürülür?

Mevcut web sayfaları veya karmaşık uygulamalar için doğrudan URL'leri 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(loggerFactory As ILoggerFactory)
        _logger = loggerFactory.CreateLogger(Of ConvertUrlToPdfFunction)()
    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 = 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 Çıktısı Nasıl Görünür?

Apple'ın web sitesi ana sayfasının sol tarafta iPhone 16 ailesi ürünlerini ve sağda takas ve Apple Card promosyonları ile Apple Watch Series 10'u gösteren bölünmüş ekran görünümü

Karmaşık HTML İçeriği JavaScript ile Nasıl Yönetilir?

Modern web uygulamaları, içeriği oluşturmak için JavaScript'e büyük ölçüde güvenir. İster grafikler, ister dinamik formlar veya tek sayfalık uygulamalar olsun, IronPDF'in işleme motoru hepsini işler.

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

Bu örnek için, JavaScript içeriğine sahip bir HTML dosyasını 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

PDF'de JavaScript İçeriği 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

Grafikler ve Veri Görselleştirmeleri Nasıl Yönetilir?

Şimdi grafikler içeren bir HTML dosyasını 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

PDF'de Grafik Görselleştirme 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, orijinal JavaScript etkileşimini nihai PDF çıktısında korur.

HTML Başlık ve Altbilgileri Nasıl Eklenir?

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

Dinamik Üstbilgi ve Altbilgiyi Nasıl Oluşturabilirim?

[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ıklar (sol) olan ve olmayan (sağ) PDF'ler arasındaki farkı gösteren görsel karşılaştırma, örnek olarak 2024 Yıllık Raporunu kullanıyor

Farklı Sayfa Aralıkları için Özel Üstbilgileri Nasıl Uygularım?

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, belirli PDF sayfa aralıklarına başlıklarınızı uygular.

Azure'da Yaygın HTML'yi PDF'ye Dönüştürme Kullanım Durumları Nelerdir?

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

Fatura Üretimi: Dinamik verilerle HTML şablonları dönüştürün.

Azure'a Özgü Yaygın Sorunlarla Nasıl Başa Çıkılır?

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

Yazı Tiplerim Neden Doğru Görüntülenmiyor?

Problem: Özel yazı tipleri doğru şekilde görüntülenmiyor veya sistem yazı tiplerine geri dönüyor.

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

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

Kalıcı yazı tipi sorunları için, IronPDF'nin yazı tipi sorun giderme kılavuzuna bakın.

"Paket dosyasından çalıştır" yapılandırma hatalarına ne sebep olur?

Problem: "Paket dosyasından çalıştır" etkinleştirildiğinde IronPDF bağımlılıkları yüklemiyor.

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

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

Sorun: Büyük HTML belgeleri zaman aşımı 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 Fonksiyonları zaman aşımı yapılandırmaları için Microsoft'un zaman aşımı belgelerine bakın. Geliştiriciler, büyük belge işlemleriyle başa çıkmak için Stack Overflow'un Azure Functions etiketi üzerinde de çözümler paylaşıyorlar.

Daha fazla Azure'a özgü HTML'den PDF'e dönüştürme sorun giderme senaryosu için IronPDF'ın Azure sorun giderme dokümantasyonunu ziyaret edin.

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

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

Dinamik İçerik İçin Oluşturma 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

Belleği Verimli Bir Şekilde Nasıl Yönetirim?

Yüksek hacimli senaryolar için, kaynakları düzgün bir şekilde ortadan kaldırı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 sık değişmediğinde 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

HTML'den PDF'ye Azure Ücreti Ne Kadar?

Azure'da HTML'den PDF'e dönüştürme çalıştırmak iki maliyet bileşeni içerir:

Azure Barındırma Maliyetleri Nelerdir?

Temel (B1) Seviyesi: Hafif yükler için uygun, PDF dönüştürme işlemleri için başlangıç seviyesi Standart (S1) Katmanı: Düzenli PDF oluşturma için daha iyi performans Premium (P1V2) Seviyesi: Yüksek hacimli veya karmaşık PDF işlemleri için önerilir

Fiyatlar bölgeye göre değişir ve zamanla değişir. İhtiyaçlarınıza uygun en iyi katmanı seçme konusunda bu IronPDF kılavuzuna bakın.

IronPDF Lisanslama Seçenekleri Nelerdir?

IronPDF, tüm aşamalarında e-posta desteği ve 30 günlük para iade garantisi dahil olmak üzere tek geliştiriciden sınırsız ekip boyutlarına kadar esnek süresiz lisanslama seçenekleri sunar

IronPDF Lisanslaması

IronPDF çeşitli lisanslama seçenekleri sunar:

  • Deneme Lisansı: Test için ücretsiz 30 günlük deneme Lite License: Tek geliştirici, tek proje Plus License: Birden fazla projeye sahip küçük ekipler Professional License: Yeniden dağıtım haklarına sahip daha büyük ekipler Unlimited License: Kurumsal düzeyde dağıtım

IronPDF'nin lisanslama sayfasını ziyaret ederek ayrıntılı fiyatlandırma ve özellik karşılaştırmalarını inceleyin.

Maliyetleri Nasıl Optimizasyon Yapabilirim?

  1. Önbellekleme uygulayın: Gereksiz PDF oluşturmayı azaltın
  2. Toplu işleme: Bir işlev yürütmesinde birden fazla PDF işleyin
  3. Kuyruk tabanlı işlem kullanın: Yükü zaman içinde dağıtarak ölçekleme ihtiyaçlarını önleyin

Hangi Güvenlik Hususlarını Akılda Tutmalıyım?

HTML'den PDF'ye dönüştürme üzerinde yoğunlaşırken, hassas PDF dosyalarını işlerken güvenlik çok önemlidir. İstenmeyen müdahalelerden PDF içeriklerini güvenli tutmak için Azure Functions güvenliğini sağlama hakkında daha fazla bilgi edinin:

Azure Functions güvenlik en iyi uygulamaları

Başarılı HTML'den PDF'e Dönüştürme İçin Temel Notlar Nelerdir?

Azure'da HTML'yi PDF'ye dönüştürmek karmaşık olmak zorunda değil. IronPDF'in Chrome görüntüleme motoru ve uygun 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'ye dönüşüm için önemli çıkarımlar:

IronPDF, basit HTML'den PDF'ye dönüştürmenin ötesinde imkanlar sunar. Bu makale, gelişmiş PDF manipülasyonu ve PDF görüntüleri desteği için yeteneklerini göstermiştir. IronPDF, geliştirmekte olduğunuz herhangi bir uygulamaya, Konsol Uygulamaları ve .NET Core uygulamaları dahil, kolaylıkla entegre olur.

Azure Uygulamalarınızda HTML'yi PDF'ye Dönüştürmeye Başlamaya Hazır mısınız?

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

İlk Adım:
green arrow pointer

IronPDF ücretsiz denemesini deneyin. Güçlü özelliklerine erişin ve Azure uygulamalarınızda HTML'yi PDF'ye dönüştürmeye hemen başlayın!

Üretim dağıtımları için, ihtiyaçlarınıza uygun planı bulmak üzere IronPDF'nin lisanslama seçeneklerini keşfedin. IronPDF, kapsamlı dokümantasyon, hızlı destek ve sürekli güncellemeler ile Azure Functions ve ötesinde güvenilir HTML'den PDF'ye dönüşüm için ihtiyacınız olan her şeyi sağlar.

Sıkça Sorulan Sorular

Azure kullanarak HTML'nin PDF'ye dönüştürülmesinin amacı nedir?

Azure kullanarak HTML'yi PDF'ye dönüştürmek, geliştiricilerin bulut tabanlı belgeleri güvenilir bir şekilde oluşturmalarına olanak tanır, bu da belge oluşturma ve yönetimi gerektiren uygulamalar için önemlidir.

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

IronPDF, profesyonel belge oluşturma için hayati öneme sahip olan karmaşık düzenleri ve stilleri destekleyerek yüksek kaliteli PDF oluşturmayı sağlamak için sağlam özellikler sunarak dönüşüm sürecini geliştirir.

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

Evet, IronPDF, Azure ile entegre edilerek PDF oluşturmayı otomatikleştirir, böylece bulut ortamlarında belge iş akışlarını sorunsuz hale getirir ve manuel müdahaleyi azaltır.

Geliştiriciler için Azure üzerinde IronPDF kullanmanın temel avantajları nelerdir?

Ana avantajlar arasında ölçeklenebilirlik, yüksek performans ve dinamik HTML içeriklerini işleme yeteneği bulunur, bu da geliştiricilerin büyük belge işleme görevlerini yönetmelerini kolaylaştırır.

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

IronPDF, karmaşık HTML düzenlerini işlemek için tasarlanmıştır ve PDF çıktısında tüm öğelerin doğru bir şekilde temsil edilmesini sağlar, bu da belge bütünlüğünü korumak için hayati önem taşır.

IronPDF'yi Azure üzerinde dağıtmak için ön koşullar nelerdir?

IronPDF'yi Azure üzerinde dağıtmak için aktif bir Azure hesabına, Azure hizmetlerini anlama bilgisine ve uygulamanızla entegre olacak IronPDF kütüphanelerine erişime ihtiyacınız vardır.

IronPDF, bulut tabanlı PDF oluşturma sırasında güvenliği nasıl sağlar?

IronPDF, 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'yi Azure üzerinde kullanırken PDF çıktısını özelleştirmek mümkün mü?

Evet, IronPDF, PDF çıktısı için kapsamlı özelleştirme seçenekleri sunar ve geliştiricilerin belgelerin görünüm ve işlevselliğini özel gereksinimlere uygun hale getirmesine olanak tanır.

IronPDF, Azure üzerinde dinamik web sayfalarının PDF'e dönüştürülmesini destekliyor mu?

IronPDF, dinamik web sayfalarını destekler ve gerçek zamanlı veri ve içerik değişikliklerini yakalar, bu da güncel belgeler oluşturmaları gereken uygulamalar için özellikle kullanışlıdır.

IronPDF, Azure'da HTML'yi PDF'e dönüştürmek için .NET 10 ile uyumlu mu?

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

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

Iron Destek Ekibi

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