如何在 Azure 函數上執行和部署 IronPDF .NET
是的。 IronPDF 可用於在 Azure 上產生、操作和讀取 PDF 文件。 IronPDF 已在多個 Azure 平台上進行了全面測試,包括 MVC 網站、Azure Functions 等。
如何在 Azure 函數中將 HTML 轉換為 PDF
- 在 Azure 函數中安裝 C# 程式庫以將 HTML 轉換為 PDF
- 選擇 Azure Basic B1 託管層或更高
- 發佈時取消勾選
Run from package file選項 - 遵循推薦的配置說明
- 使用代碼範例來創建使用 Azure 的 PDF 生成器
操作指南
安裝 IronPdf 套件
Azure 函數應用程式有三種不同的環境: Linux 、 Windows和容器。 本文介紹如何在所有三種環境中設定 IronPdf。 其中,建議使用 Azure 函數應用程式容器,因為它提供了一個隔離的環境。 首先,讓我們選擇要安裝的合適軟體包。
Azure 函數應用程式容器
Azure 函數應用程式容器使用起來非常方便,因此是部署 IronPdf 的建議方式。
安裝 IronPdf.Linux 軟體包
配置 Docker 文件
根據你使用的Linux發行版配置Docker檔。 請參閱本文以取得詳細說明。
Azure 函數應用程式(Windows)
若要使用標準的IronPDF包,請確保"從包檔案執行"選項未選取。 啟用此選項會將項目部署為 ZIP 文件,這會幹擾 IronPdf 的文件配置。 如果您希望啟用"從套件檔案執行"選項,請安裝IronPdf.Slim套件。
Install-Package IronPdf

Azure 函數應用程式(Linux)
對於 Azure 函數應用程式(Linux),預設情況下專案會部署為 ZIP 文件,並且無法停用此行為。 這類似於在 Azure 函數應用程式(Windows)上啟用"從套件檔案執行"選項。
安裝 IronPdf.Slim 包
選擇正確的 Azure 選項
選擇合適的託管級別
Azure Basic B1是滿足我們最終使用者渲染需求的最低託管等級。 如果您正在建置高吞吐量系統,則可能需要對其進行升級。
注意:如果未選擇應用程式服務計劃類型,IronPdf 可能無法渲染 PDF 文件。

.NET 6 配置
微軟最近從 .NET 6 及更高版本中移除了映像處理庫,導致許多舊版 API 無法正常運作。因此,您需要配置專案以允許呼叫這些舊版 API。
- 在 Linux 系統上,設定
Installation.LinuxAndDockerDependenciesAutoConfig=true;以確保libgdiplus已安裝在機器上。 - 將以下內容加入 .NET 6 專案的 .csproj 檔案:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles><GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>- 在專案中建立一個名為
runtimeconfig.template.json的文件,並填入以下內容:
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}- 最後,在程式開頭加入以下程式碼行:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);Azure 函數程式碼範例
此範例將 HTML 轉換為 PDF,並自動將日誌條目輸出到內建的 Azure 日誌記錄器(請參閱ILogger log )。
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log, ExecutionContext context)
{
log.LogInformation("Entered PrintPdf API function...");
// Apply license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Enable logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
// Configure IronPdf settings
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
try
{
log.LogInformation("About to render PDF...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF from a URL
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("Finished rendering PDF...");
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering PDF");
return new OkObjectResult($"Error while rendering PDF: {e}");
}
}[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log, ExecutionContext context)
{
log.LogInformation("Entered PrintPdf API function...");
// Apply license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Enable logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
// Configure IronPdf settings
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
try
{
log.LogInformation("About to render PDF...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF from a URL
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("Finished rendering PDF...");
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering PDF");
return new OkObjectResult($"Error while rendering PDF: {e}");
}
}在 Visual Studio 中使用 Azure 函數範本建立專案可能會產生略有不同的程式碼。 由於這些差異,即使安裝了相同的軟體包,一個專案可能可以運行,而另一個專案可能無法運行。 如果發生這種情況,請將CustomDeploymentDirectory屬性設為"/tmp" 。
了解每種安裝配置
- LinuxAndDockerDependenciesAutoConfig :此設定會檢查並嘗試下載 Chrome 引擎所需的所有相依性。在使用非圖形使用者介面系統(例如 Linux)時,此設定是必需的。 在容器系統中,依賴項通常在 Dockerfile 中列出;因此,您可以將其設定為 false。
- AutomaticallyDownloadNativeBinaries :此選項會在執行時下載原生 Chrome 二進位。使用 IronPdf.Slim 套件時需要此選項。
- CustomDeploymentDirectory :對於寫入權限受限的系統,需要進行此設定。
已知問題
共享主機方案不支援 SVG 字體渲染
我們發現的一個限制是, Azure 託管平台在其價格較低的共用 Web 應用程式層中不支援伺服器載入 SVG 字體(例如 Google Fonts)。 這是因為出於安全原因,這些共享主機平台不允許存取 Windows GDI+ 圖形物件。
我們建議使用Windows 或 Linux Docker 容器,或 Azure 上的 VPS 來解決需要最佳字體渲染效果的問題。
Azure 免費方案託管速度慢
Azure 免費層和共用層以及按需付費方案不適合 PDF 渲染。 我們推薦 Azure B1 主機/進階套餐,這也是我們自己使用的套餐。 將HTML to PDF對任何電腦來說都是一項相當大的"工作量",類似於在您自己的電腦上開啟並渲染網頁。由於使用了真正的瀏覽器引擎,因此我們需要進行相應的配置,並預期渲染時間與同等效能的桌上型電腦類似。
建立工程支援請求工單
若要建立請求工單,請參閱"如何為 IronPDF 提交工程支援請求"指南。
常見問題解答
如何在 Azure 上託管 PDF 生成庫?
您可以透過設定 Azure 函數或 MVC 網站,在 Azure 上託管 IronPDF 等 PDF 產生庫。請確保已從 NuGet 安裝必要的軟體包,並根據庫的要求配置您的環境。
哪些 Azure 環境與 PDF 程式庫相容?
IronPDF 與多種 Azure 環境相容,包括 MVC 網站和 Azure Functions。它旨在與 Azure 提供的不同平台無縫協作。
在 Azure 上託管 PDF 庫有哪些要求?
為了在 Azure 上使用 IronPDF 時獲得最佳效能,建議至少使用 Azure 基本 B1 層託管服務。這樣可以確保有足夠的資源來有效率地渲染 PDF 檔案。
如何在 Linux 系統上為 Azure 函數應用程式設定 PDF 程式庫?
若要在 Linux 系統上的 Azure 函數應用程式中設定 IronPDF,請安裝 IronPdf.Slim 套件。將專案部署為 ZIP 文件,並確保所有配置均已針對 Linux 環境正確設定。
在 Azure 上使用 PDF 程式庫時,.NET 6 需要哪些配置?
在 Azure 上使用 .NET 6 整合 IronPDF 時,請更新專案設定以允許呼叫舊版 API。將Installation.LinuxAndDockerDependenciesAutoConfig=true ,並在專案檔案中包含必要的配置。
為什麼建議在 Azure 上使用 Docker 容器進行 PDF 渲染?
建議在 Azure 上使用 Docker 容器進行 PDF 渲染,因為它提供了更可控的環境,支援更好的字體渲染,並避免了共享主機方案的限制。
什麼原因會導致 Azure 免費方案中的 PDF 渲染速度緩慢?
由於運算資源有限,Azure 免費方案的 PDF 渲染速度較慢。這個過程需要大量的運算能力,類似於渲染網頁,因此更適合使用 B1 或 Premium 等更高等級的套件。
如何排查包含 PDF 程式庫的 Azure 函數專案中無法正常運作的問題?
如果您的 Azure Function 專案與 IronPDF 不相容,請檢查CustomDeploymentDirectory屬性是否設定為“/tmp”,並確保所有必要的套件和設定都已正確安裝和設定。
在 Azure 上部署 PDF 庫有哪些支援選項?
如需有關在 Azure 上部署 IronPDF 的支持,請參閱 IronPDF 網站上的「如何為 IronPDF 提出工程支援要求」指南,以取得詳細協助。






