跳過到頁腳內容
使用IRONPDF

如何使用IronPDF創建Azure PDF生成器

構建可靠的基於雲的 PDF 生成器面臨著獨特的挑戰。 在沙盒限制、內存限制和分佈式系統的複雜性之間,許多開發人員難以找到一個在生產中有效的解決方案。 That's where the combination of Azure and IronPDF becomes powerful, with IronPDF offering enterprise-grade PDF generation that scales effortlessly while maintaining the features your applications need.

無論您是生成發票、報告還是將網頁內容轉換為 PDF 文件,本指南將向您展示如何構建一個無縫處理從簡單 HTML 轉換到複雜文檔操作的堅固 Azure PDF 生成器,同時優化性能和成本。

從 IronPDF 的免費試用開始,並跟隨學習建構您自己的雲端 PDF 解決方案。

什麼造就了一個好的 Azure PDF 生成器?

並非所有的 PDF 解決方案都是平等設計的,尤其是在雲部署方面。 一個準備投入生產的 Azure PDF 生成器必須滿足一些超出基本文件創建的關鍵要求。 了解 Azure Functions 部署選項對於成功至關重要。

性能和可擴展性是需要考慮的關鍵方面。 您的解決方案必須處理併發請求而不會出現瓶頸,在高峰負載期間自動擴展,即使在處理複雜文檔時也能保持一致的響應時間。 這意味著選擇一個為雲環境優化並了解無服務架構細微差別的庫。

Azure 平台帶來自身的考量。 App Service 沙盒限制某些 Win32/圖形 API;依賴於桌面圖形堆棧的庫可能會遇到問題。 消耗計劃中的內存限制可能會導致處理較大文檔時出現故障。 此外,雲計算的分佈式特性意味著您的解決方案需要有效地處理無狀態操作。

對於企業應用程序,功能需求超出了簡單的 HTML 轉換。 Modern PDF generators must support JavaScript rendering for dynamic content, handle complex modern CSS, and offer security features such as encryption and digital signatures. IronPDF 通過其基於 Chrome 的渲染引擎解決了所有這些需求,成為 Azure 部署的理想選擇。

Azure App Services vs Azure Functions

Azure App Services 和 Azure Functions 都是 Microsoft Azure 的基於雲的託管選擇,但它們用於不同的目的:

  • Azure App Services 是一個完全托管的平台,用於託管 Web 應用、REST API 和移動應用後端。 它提供了持久資源,支持長期運行的進程,並提供內置的擴展、部署插槽和與 CI/CD 管道的集成。 這些功能使其非常適合需要持續運行的應用程序。
  • 另一方面,Azure Functions 是一種設計用於事件驅動的短期任務的 無服務計算 服務。 函數只有在觸發時才運行(例如通過 HTTP 請求、計時器或消息隊列),您只需為執行時間付費。它們非常適合不需要不斷運行的託管環境的背景作業、數據處理、自動化腳本和微服務。

如何設置 IronPDF 以用於 Azure Functions?

在 Azure Functions 中設置 IronPDF 需要根據您的部署場景選擇合適的軟件包。 該庫提供三個主要包,每個包針對不同的環境進行了優化。 根據Microsoft 的 Azure Functions 文檔,選擇合適的包對於最佳性能至關重要。

對於基於 Windows 的 Azure Functions,使用標準的 IronPDF 包,對於 Linux/容器則使用 IronPdf.Linux:無論是什麼操作系統,使用距包運行可以更快地進行冷啟動。 容器部署最適合 IronPdf.Linux 提供最大的靈活性和控制權。

Install-Package IronPdf   // For Windows with file system access
Install-Package IronPdf.Linux // For containers

這裡有一個完整的 Azure Function 設置,能夠正確配置 PDF 生成:

using System;
using System.IO;
using System.Net;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
public class PdfGeneratorFunction
{
    private readonly ILogger _logger;
    public PdfGeneratorFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<PdfGeneratorFunction>();
    }
    [Function("GeneratePdfAndStore")]
    public async Task<HttpResponseData> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = "generate-pdf-store")] HttpRequestData req)
    {
        License.LicenseKey = Environment.GetEnvironmentVariable("IronPdfLicenseKey");
        Installation.LinuxAndDockerDependenciesAutoConfig = true;
        Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
        Installation.CustomDeploymentDirectory = "/tmp";
        string htmlContent = await req.ReadAsStringAsync();
        var response = req.CreateResponse(HttpStatusCode.OK);
        if (string.IsNullOrWhiteSpace(htmlContent))
        {
            response.StatusCode = HttpStatusCode.BadRequest;
            await response.WriteStringAsync("HTML content is required.");
            return response;
        }
        try
        {
            var renderer = new ChromePdfRenderer
            {
                RenderingOptions = new ChromePdfRenderOptions
                {
                    MarginTop = 10,
                    MarginBottom = 10,
                    MarginLeft = 10,
                    MarginRight = 10,
                    EnableJavaScript = true
                }
            };
            using var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            response.Headers.Add("Content-Type", "application/pdf");
            await response.WriteBytesAsync(pdf.BinaryData);
            _logger.LogInformation($"Generated PDF with {pdf.PageCount} pages.");
            return response;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error generating PDF.");
            response.StatusCode = HttpStatusCode.InternalServerError;
            await response.WriteStringAsync($"PDF generation failed: {ex.Message}");
            return response;
        }
    }
}
using System;
using System.IO;
using System.Net;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
public class PdfGeneratorFunction
{
    private readonly ILogger _logger;
    public PdfGeneratorFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<PdfGeneratorFunction>();
    }
    [Function("GeneratePdfAndStore")]
    public async Task<HttpResponseData> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = "generate-pdf-store")] HttpRequestData req)
    {
        License.LicenseKey = Environment.GetEnvironmentVariable("IronPdfLicenseKey");
        Installation.LinuxAndDockerDependenciesAutoConfig = true;
        Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
        Installation.CustomDeploymentDirectory = "/tmp";
        string htmlContent = await req.ReadAsStringAsync();
        var response = req.CreateResponse(HttpStatusCode.OK);
        if (string.IsNullOrWhiteSpace(htmlContent))
        {
            response.StatusCode = HttpStatusCode.BadRequest;
            await response.WriteStringAsync("HTML content is required.");
            return response;
        }
        try
        {
            var renderer = new ChromePdfRenderer
            {
                RenderingOptions = new ChromePdfRenderOptions
                {
                    MarginTop = 10,
                    MarginBottom = 10,
                    MarginLeft = 10,
                    MarginRight = 10,
                    EnableJavaScript = true
                }
            };
            using var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            response.Headers.Add("Content-Type", "application/pdf");
            await response.WriteBytesAsync(pdf.BinaryData);
            _logger.LogInformation($"Generated PDF with {pdf.PageCount} pages.");
            return response;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error generating PDF.");
            response.StatusCode = HttpStatusCode.InternalServerError;
            await response.WriteStringAsync($"PDF generation failed: {ex.Message}");
            return response;
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

配置設置對 Azure 部署至關重要。 LinuxAndDockerDependenciesAutoConfig 確保所有 Chrome 依賴項都得到正確配置,而禁用 GPU 模式可以防止在無服務環境中出現渲染問題。 將部署目錄設置為 /tmp 可以在受限的 Azure Functions 環境中提供寫入權限。

示例輸出 PDF 文件

如何使用 IronPDF 創建 Azure PDF 生成器:圖 2 - PDF 輸出示例

我應該選擇哪個 Azure 託管 層來進行 PDF 生成?

使用 IronPDF 在雲中生成 PDF 需要比輕型工作負載更多的計算機和圖形支持。 Microsoft 文檔和 IronPDF 指南都建議避免使用免費、共享消耗層,因為它們在 GDI+ 等關鍵 API 上有限制,共享的計算限製以及不足的記憶體和執行穩定性。 欲了解更多有關如何正確選擇滿足您需求的層的信息,請參閱這篇文章

我可以使用 Azure Functions 創建無服務的 PDF API 嗎?

使用 Azure Functions 構建無服務 PDF API 提供自動擴展、按需付費定價以及最小化的基礎設施管理。 以下是如何創建可處理各種 PDF 生成場景的生產就緒 API。 如需完整的 API 參考,請查閱IronPDF 文檔

public class PdfApiFunction
{
    private readonly ChromePdfRenderer _renderer;
    public PdfApiFunction()
    {
        // Initialize renderer with production settings
        _renderer = new ChromePdfRenderer
        {
            RenderingOptions = new ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
                PrintHtmlBackgrounds = true,
                CreatePdfFormsFromHtml = true,
                CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
            }
        };
    }
    [FunctionName("ConvertUrlToPdf")]
    public async Task<IActionResult> ConvertUrl(
        [HttpTrigger(AuthorizationLevel.Function, "post")] ConvertUrlRequest request,
        ILogger log)
    {
        if (string.IsNullOrEmpty(request?.Url))
            return new BadRequestObjectResult("URL is required");
        try
        {
            var pdf = _renderer.RenderUrlAsPdf(request.Url);
            // Apply optional features
            if (request.AddWatermark)
            {
                pdf.ApplyWatermark("<h2>CONFIDENTIAL</h2>", 30, 
                    IronPdf.Editing.VerticalAlignment.Middle, 
                    IronPdf.Editing.HorizontalAlignment.Center);
            }
            if (request.ProtectWithPassword)
            {
                pdf.SecuritySettings.UserPassword = request.Password;
                pdf.SecuritySettings.AllowUserCopyPasteContent = false;
            }
            return new FileContentResult(pdf.BinaryData, "application/pdf");
        }
        catch (Exception ex)
        {
            log.LogError(ex, $"Failed to convert URL: {request.Url}");
            return new StatusCodeResult(500);
        }
    }
}
public class ConvertUrlRequest
{
    public string Url { get; set; }
    public bool AddWatermark { get; set; }
    public bool ProtectWithPassword { get; set; }
    public string Password { get; set; }
}
public class PdfApiFunction
{
    private readonly ChromePdfRenderer _renderer;
    public PdfApiFunction()
    {
        // Initialize renderer with production settings
        _renderer = new ChromePdfRenderer
        {
            RenderingOptions = new ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
                PrintHtmlBackgrounds = true,
                CreatePdfFormsFromHtml = true,
                CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
            }
        };
    }
    [FunctionName("ConvertUrlToPdf")]
    public async Task<IActionResult> ConvertUrl(
        [HttpTrigger(AuthorizationLevel.Function, "post")] ConvertUrlRequest request,
        ILogger log)
    {
        if (string.IsNullOrEmpty(request?.Url))
            return new BadRequestObjectResult("URL is required");
        try
        {
            var pdf = _renderer.RenderUrlAsPdf(request.Url);
            // Apply optional features
            if (request.AddWatermark)
            {
                pdf.ApplyWatermark("<h2>CONFIDENTIAL</h2>", 30, 
                    IronPdf.Editing.VerticalAlignment.Middle, 
                    IronPdf.Editing.HorizontalAlignment.Center);
            }
            if (request.ProtectWithPassword)
            {
                pdf.SecuritySettings.UserPassword = request.Password;
                pdf.SecuritySettings.AllowUserCopyPasteContent = false;
            }
            return new FileContentResult(pdf.BinaryData, "application/pdf");
        }
        catch (Exception ex)
        {
            log.LogError(ex, $"Failed to convert URL: {request.Url}");
            return new StatusCodeResult(500);
        }
    }
}
public class ConvertUrlRequest
{
    public string Url { get; set; }
    public bool AddWatermark { get; set; }
    public bool ProtectWithPassword { get; set; }
    public string Password { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此 API 結構可為不同的使用案例提供靈活性,同時保持清晰的關注分離。 該函數接受 JSON 請求,使用適當的錯誤處理來處理它們,並返回具有可選安全功能的 PDF。

生產 PDF 生成的最佳實踐是什麼?

生產的 PDF 生成需要仔細關注性能、可靠性和資源管理。 實施這些最佳實踐可確保您的 Azure PDF 生成器在現實世界條件下以最佳性能運行。

當處理多個並發請求時,內存管理變得至關重要。 一個關鍵點在於始終使用 using 語法或顯式的處理來正確處理 PDF 對象。 對於大型文檔,考慮流式輸出而不是將整個 PDF 文件加載到內存中。 另一個重要方面是實施請求限制以防止在流量激增時的內存耗竭。

public static class PdfProductionService
{
    private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(5); // Limit concurrent operations
    public static async Task<byte[]> GeneratePdfAsync(string html, ILogger log)
    {
        await _semaphore.WaitAsync();
        try
        {
            using var renderer = new ChromePdfRenderer
            {
                RenderingOptions = new ChromePdfRenderOptions
                {
                    Timeout = 60,       // Prevent hanging operations
                    UseMarginsOnHeaderAndFooter = UseMargins.None
                }
            };
            renderer.RenderingOptions.WaitFor.RenderDelay(1000);
            using var pdf = renderer.RenderHtmlAsPdf(html);
            // Log metrics for monitoring
            log.LogInformation($"PDF generated: {pdf.PageCount} pages, {pdf.BinaryData.Length} bytes");
            return pdf.BinaryData;
        }
        finally
        {
            _semaphore.Release();
        }
    }
}
public static class PdfProductionService
{
    private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(5); // Limit concurrent operations
    public static async Task<byte[]> GeneratePdfAsync(string html, ILogger log)
    {
        await _semaphore.WaitAsync();
        try
        {
            using var renderer = new ChromePdfRenderer
            {
                RenderingOptions = new ChromePdfRenderOptions
                {
                    Timeout = 60,       // Prevent hanging operations
                    UseMarginsOnHeaderAndFooter = UseMargins.None
                }
            };
            renderer.RenderingOptions.WaitFor.RenderDelay(1000);
            using var pdf = renderer.RenderHtmlAsPdf(html);
            // Log metrics for monitoring
            log.LogInformation($"PDF generated: {pdf.PageCount} pages, {pdf.BinaryData.Length} bytes");
            return pdf.BinaryData;
        }
        finally
        {
            _semaphore.Release();
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

性能優化策略包括預熱函數以消除冷啟動,緩存字體和圖像等經常使用的資源,將它們本地化,為數據庫操作使用連接池和實施具有指數回退的重試邏輯以解決瞬態故障。

監控和診斷為您的 PDF 生成器的健康狀況提供了可視化。 通過使用應用程序見解,我們可以跟蹤生成時間、故障率和資源消耗。 此外,設置警報以檢測異常情況,例如增加的錯誤率或響應時間下降,並記錄每個 PDF 生成請求的詳細信息以進行故障排除。

如何在 Azure 中處理高級 PDF 功能?

IronPDF 的高級功能使您的 PDF 生成器超越基本文檔創建。 這些能力在 Azure 環境中得到充分支持,使企業級文檔處理成為可能。 Learn more about creating PDF forms and adding annotations to enhance your documents.

IronPDF 支持密碼保護和權限管理,允許對文檔訪問進行細粒度控制:

public static PdfDocument SecurePdf(PdfDocument pdf, SecurityOptions options)
{
    // Apply AES-256 encryption
    pdf.SecuritySettings.UserPassword = options.UserPassword;
    pdf.SecuritySettings.OwnerPassword = options.OwnerPassword;
    // Configure permissions
    pdf.SecuritySettings.AllowUserPrinting = options.AllowPrinting;
    pdf.SecuritySettings.AllowUserCopyPasteContent = options.AllowCopying;
    pdf.SecuritySettings.AllowUserAnnotations = options.AllowAnnotations;
    // Add digital signature if certificate provided , the digital signature must be type PdfSignature
    if (options.DigitalCertificate != null)
    {
        pdf.Sign(options.DigitalCertificate);
    }
    return pdf;
}
public static PdfDocument SecurePdf(PdfDocument pdf, SecurityOptions options)
{
    // Apply AES-256 encryption
    pdf.SecuritySettings.UserPassword = options.UserPassword;
    pdf.SecuritySettings.OwnerPassword = options.OwnerPassword;
    // Configure permissions
    pdf.SecuritySettings.AllowUserPrinting = options.AllowPrinting;
    pdf.SecuritySettings.AllowUserCopyPasteContent = options.AllowCopying;
    pdf.SecuritySettings.AllowUserAnnotations = options.AllowAnnotations;
    // Add digital signature if certificate provided , the digital signature must be type PdfSignature
    if (options.DigitalCertificate != null)
    {
        pdf.Sign(options.DigitalCertificate);
    }
    return pdf;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

我們可以添加頁眉和頁腳來設置頁碼,插入水印進行品牌或安全防護,將多個 PDF 合併成一個文檔,還可以提取或替換特定頁面:

// Add dynamic headers with page numbers
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right'>Page {page} of {total-pages}</div>",
    Height = 20
};
pdf.AddHTMLHeaders(header);
// Apply conditional watermarks
if (document.IsDraft)
{
    pdf.ApplyWatermark("<h1>DRAFT</h1>", 45, VerticalAlignment.Middle);
}
// Merge multiple documents
var mergedPdf = PdfDocument.Merge(pdf1, pdf2, pdf3);
// Add dynamic headers with page numbers
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right'>Page {page} of {total-pages}</div>",
    Height = 20
};
pdf.AddHTMLHeaders(header);
// Apply conditional watermarks
if (document.IsDraft)
{
    pdf.ApplyWatermark("<h1>DRAFT</h1>", 45, VerticalAlignment.Middle);
}
// Merge multiple documents
var mergedPdf = PdfDocument.Merge(pdf1, pdf2, pdf3);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF 支持生成包含表單字段的 PDF,通過程式化方法填寫現有的 PDF 表單,以及提取表單數據以便進行處理,這使得它在 Azure 上用於自動化文檔工作流是理想的選擇。

new ChromePdfRenderer()
    .RenderHtmlAsPdf("<h1>Secure Document</h1>")
    .SaveAs("azure-secure.pdf");
new ChromePdfRenderer()
    .RenderHtmlAsPdf("<h1>Secure Document</h1>")
    .SaveAs("azure-secure.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

我應該關注哪些常見的錯誤?

即使設置正確,特定問題仍然經常在部署 PDF 生成器到 Azure 時出現。 了解這些問題及其解決方案可以節省寶貴的故障排除時間。對於綜合故障排除,請參閱我們的 Azure 和Azure Blob 服務器故障排除指南

  • 當 IronPDF 無法寫入臨時文件時,出現“拒絕訪問路徑”錯誤。 通過設定 Installation.CustomDeploymentDirectory = "/tmp" 來解決這個問題,以確保可以寫入臨時文件。 了解更多關於IronPDF 運行時文件夾的信息。
  • 附加說明:如果使用基於包的運行部署,請確保應用程序有一個單獨的可寫路徑,因為 /home/site/wwwroot 是只讀的。 (微軟文檔:Azure Functions 文件系統)
  • 當渲染複雜文檔超過 Azure 的函數超時時,會發生超時異常
  • 字體渲染問題表現為生成的 PDF 中出現丟失或不正確的字體。 解決方法是通過使用 Base64 編碼將字體嵌入到 HTML 中,使用 Azure 原生支持的網絡安全字體,或者升級到容器部署以獲得完整的字體控制。 我們的字體管理指南提供了詳細的解決方案。
  • 內存異常的可能性還是存在,因為 PDF 生成非常耗費內存。常見的問題包括大型或並發請求期間的內存不足異常。

    最好的實踐包括:

    • 立即處理 PdfDocument 對象 (using 語句)。
    • 使用 semaphore 或隊列限制併發請求。

如何部署和監控我的 Azure PDF 生成器?

1. 部署最佳實踐

  • 自動化 CI/CD:使用 Azure DevOpsGitHub Actions 進行可重複的部署。
  • License Keys:將 IronPDF 的許可密鑰安全地存儲在Azure Key Vault中,而不是提交到源代碼控制中,而是在應用程序設置中引用它們。
  • 可寫路徑:確保正確配置 IronPDF 的臨時文件夾(適用於 Linux/容器的 /tmp,適用於 Windows 的適當路徑)。

2. 監控和自定義指標

  • 應用程序見解:使用 TelemetryClient.TrackMetric(應用程序見解 SDK)或 OpenTelemetry 來進行自定義指標。

    示例:

    var telemetryClient = new TelemetryClient();
    telemetryClient.TrackMetric("PdfGenerationTimeMs", generationTime.TotalMilliseconds);
    telemetryClient.TrackMetric("PdfPageCount", pdf.PageCount);
    telemetryClient.TrackMetric("PdfFileSizeBytes", pdf.BinaryData.Length);
    var telemetryClient = new TelemetryClient();
    telemetryClient.TrackMetric("PdfGenerationTimeMs", generationTime.TotalMilliseconds);
    telemetryClient.TrackMetric("PdfPageCount", pdf.PageCount);
    telemetryClient.TrackMetric("PdfFileSizeBytes", pdf.BinaryData.Length);
    IRON VB CONVERTER ERROR developers@ironsoftware.com
    $vbLabelText   $csharpLabel
  • 避免直接使用 ILogger.LogMetric(...),因為這不能可靠地將指標發送到應用程序見解。

3. 預熱&資源管理

  • 預熱函數以減少冷啟動。
  • 如果可能,本地緩存常用資源,例如字體或模板。
  • 為外部服務使用連接池和重試邏輯,以保持高可靠性。

用雲端力量改造您的文檔

您現在已經構建了一個生產就緒的 Azure PDF 生成器,能夠處理從簡單的 HTML 轉換到具有安全功能的複雜文檔操作。 您的解決方案能夠自動擴展、有效地管理資源,並提供企業應用所需的可靠性。

結合 Azure 的雲基礎設施和 IronPDF 的渲染能力提供了一個隨著您的需求而擴展的 PDF 生成平台。 無論是處理少量文檔還是每小時數千份,您的生成器都能保持一致的性能,同時保持成本的可預見性。

準備好將您的 Azure PDF 生成器投入生產了嗎? 開始試用免費試用版,它提供無限的 PDF 生成而不收取每份文檔的費用。

立即開始使用 IronPDF。
green arrow pointer

常見問題解答

在 Azure 中使用 IronPDF 產生 PDF 檔案有哪些優勢?

IronPDF 提供企業級 PDF 產生功能,可與 Azure 無縫集成,確保可擴充性和可靠性。它克服了雲端環境中常見的沙箱限制和記憶體限制等挑戰。

IronPDF 如何處理 Azure 環境中的記憶體限制?

IronPDF 針對 Azure 的記憶體限制進行了最佳化,利用高效的處理技術,使其能夠在不超出可用資源的情況下產生 PDF。

IronPDF 可以與 Azure Functions 一起使用嗎?

是的,IronPDF 可以與 Azure Functions 集成,創建無伺服器 PDF 生成解決方案,從而受益於自動擴展和經濟高效的執行。

將 IronPDF 與 Azure 結合使用時,需要考慮哪些安全性問題?

IronPDF 支援安全產生 PDF,遵循傳輸中和靜態資料保護的最佳實踐,確保符合 Azure 的安全標準。

是否可以將 IronPDF 部署在 Azure 應用程式服務上?

當然可以,IronPDF 可以部署在 Azure 應用程式服務上,讓開發人員能夠在託管環境中利用其功能。

IronPDF是否支援在Azure中自訂PDF功能?

是的,IronPDF 為 PDF 生成提供了廣泛的自訂選項,包括佈局、設計和互動性,同時也能在 Azure 中運作。

IronPDF 如何確保分散式 Azure 系統中的高效能?

IronPDF 旨在輕鬆擴展到分散式系統,利用 Azure 的基礎架構來維持高效能和高可靠性。

IronPDF 是否支援使用 .NET 10 在 Azure 上產生 PDF 檔案?

是的,IronPDF 與 Azure 環境中的 .NET 10 完全相容,包括 Functions、App Services 和容器部署。它提供開箱即用的無縫支持,無需任何特殊設置。 IronPDF 的平台要求明確列出了其支援的執行環境,其中包括 .NET 10。 (ironpdf.com)

IronPDF 支援哪些 .NET 版本?與 .NET 10 的兼容性如何提高效能?

IronPDF 支援多種 .NET 版本,包括 .NET 6、7、8、9 和 10。使用 .NET 10 意味著您可以受益於最新的執行時間優化、改進的垃圾回收機制以及在 Azure 中更高的效能——尤其是在無伺服器或基於容器的 PDF 生成方面。 ironpdf.com 在其「C# PDF 庫」功能清單中確認了對 .NET 10 的支援。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。