IronPDF 教程 .NET Core PDF 生成 Convert HTML to PDF in .NET Core using C# with IronPDF Jacob Mellor 更新:2026年1月31日 下載 IronPDF NuGet 下載 DLL 下載 Windows Installer 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 This article was translated from English: Does it need improvement? Translated View the article in English 在現代.NET應用程式中,直接從 HTML 產生高保真 PDF 是一項常規要求——報告、發票和工單都需要像素級完美的輸出,以匹配 Web UI。 IronPDF透過公開 C# API 來簡化此工作流程,該 API 可將 HTML、 Razor視圖和完整的網站渲染成符合標準的 PDF 文件。 看完本指南後,開發人員將能夠轉換ASP.NET Core專案中的 URL、原始 HTML 或 MVC 視圖,並將相同的程式碼部署到 Windows、Linux、Docker 或無伺服器環境中。 提示對於佈局問題, IronPDF提供了一個無頭 Chrome 調試器,可以在 PDF 渲染之前幫助診斷 CSS、 JavaScript和媒體查詢的怪異之處。 請參閱專門製作的像素級精確 HTML 轉 PDF 指南,以了解深入的技巧。 快速入門:在.NET Core中從 HTML 建立 PDF 使用IronPDF庫,在.NET Core中輕鬆將 HTML 轉換為 PDF。 本指南提供了一個簡單的範例,幫助您快速入門,只需編寫最少的程式碼即可將 HTML 內容渲染成高品質的 PDF。 非常適合希望輕鬆將 PDF 創建功能整合到應用程式中的開發人員。 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf PM > Install-Package IronPdf 複製並運行這段程式碼。 var pdf = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello World</h1>"); 部署到您的生產環境進行測試 今天就在您的專案中開始使用免費試用IronPDF Free 30 Day Trial 最簡工作流程(5個步驟) 安裝`IronPdf` NuGet套件 使用`RenderUrlAsPdf`轉換網站 URL 透過`RenderHtmlAsPdf`渲染原始 HTML 將 MVC 視圖匯出為 PDF 調整紙張尺寸、頁邊距、頁首和頁尾 快速入門清單 1.安裝– Install-Package IronPdf 2.渲染 URL – ChromePdfRenderer.RenderUrlAsPdf() 3.渲染原始 HTML – ChromePdfRenderer.RenderHtmlAsPdf() 4.導出Razor視圖– ChromePdfRenderer.RenderHtmlAsPdfAsync() 5.微調輸出– 利用 ChromePdfRenderer.RenderingOptions 本教學涵蓋的內容 URL、HTML 字串和Razor視圖轉換 紙張、頁邊距和媒體類型配置 跨平台部署(Windows、Linux、Docker) 後製:合併、新增浮水印、密碼保護和數位簽章 PDF 文件 端到端範例:票務預訂 MVC 應用 如何在.NET Core安裝PDF庫? 在任何.NET 8 專案中,安裝程式庫只需一行命令,並且與.NET 9 預覽版和即將發布的.NET 10 版本保持向前相容。 使用 NuGet 的套件管理器控制台,套件管理器將自動解析 Windows、Linux、Docker 和無伺服器目標的所有相依性。 PM> Install-Package IronPdf # .NET 8 LTS and higher PM> Install-Package IronPdf # .NET 8 LTS and higher SHELL 需要命令列介面 (CLI) 嗎?同樣的指令也適用於專案資料夾內的 dotnet add package IronPdf。 安裝完成後,透過轉換任意公用 URL 來確認所有連線均已正確配置: // Program.cs — .NET 8 LTS using IronPdf; var renderer = new ChromePdfRenderer(); // Render a live website to PDF using PdfDocument pdf = renderer.RenderUrlAsPdf("https://example.com"); // Persist to disk pdf.SaveAs("website-snapshot.pdf"); // Program.cs — .NET 8 LTS using IronPdf; var renderer = new ChromePdfRenderer(); // Render a live website to PDF using PdfDocument pdf = renderer.RenderUrlAsPdf("https://example.com"); // Persist to disk pdf.SaveAs("website-snapshot.pdf"); $vbLabelText $csharpLabel 工作原理 ChromePdfRenderer 在底層啟動一個沙盒化的 Chromium 實例-無需單獨安裝 Chrome。 RenderUrlAsPdf 捕捉完全渲染的 DOM,包括 JavaScript 驅動的內容、CSS 媒體查詢和字型。 產生的 PdfDocument 提供了用於合併、密碼保護或對輸出進行數位簽章的輔助方法—這些功能將在本教學的後面部分介紹。 有關部署細節(Azure 應用程式服務、AWS Lambda、本地 Linux)的更多詳細信息,請參閱專用安裝指南和高級NuGet設定頁面。 Docker 部署最佳實務中涵蓋了 Docker 和 K8s 叢集的內部 CI/CD 技巧。 .NET Core服務如何將即時網站 URL 轉換為 PDF? 只需呼叫一次 RenderUrlAsPdf 即可:傳遞任何可公開存取的 URL, IronPDF即可返回完全渲染的、符合標準的 PDF。 以下程式碼針對.NET 8 LTS,並且在.NET 9 預覽版以及即將於 2025 年發布的.NET 10 版本上編譯保持不變。 逐步範例 // Program.cs — .NET 8 LTS-compatible using IronPdf; // 1. Activate a license (or trial key) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // 2. Create a reusable renderer instance var renderer = new ChromePdfRenderer { RenderingOptions = { // Force A4 portrait output and apply @media print styles PaperSize = PdfPaperSize.A4, CssMediaType = PdfCssMediaType.Print } }; // 3. Convert Microsoft Docs home page to PDF using PdfDocument pdf = renderer.RenderUrlAsPdf("https://learn.microsoft.com/"); // 4. Save the PDF or stream it from a Web API pdf.SaveAs("docs-offline-copy.pdf"); // Program.cs — .NET 8 LTS-compatible using IronPdf; // 1. Activate a license (or trial key) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // 2. Create a reusable renderer instance var renderer = new ChromePdfRenderer { RenderingOptions = { // Force A4 portrait output and apply @media print styles PaperSize = PdfPaperSize.A4, CssMediaType = PdfCssMediaType.Print } }; // 3. Convert Microsoft Docs home page to PDF using PdfDocument pdf = renderer.RenderUrlAsPdf("https://learn.microsoft.com/"); // 4. Save the PDF or stream it from a Web API pdf.SaveAs("docs-offline-copy.pdf"); $vbLabelText $csharpLabel 為什麼有效 ChromePdfRenderer 啟動一個沙盒化的 Chromium 實例-沒有系統 Chrome 依賴,保持 Docker 映像精簡。 RenderUrlAsPdf 等待 DOM 和JavaScript完成後再進行快照,以便單頁應用程式能夠正確渲染。 將 CssMediaType 設定為Print會告訴引擎使用特定於列印的規則,以符合瀏覽器的 Print → Save as PDF 輸出。 產生的 PdfDocument 可以加密、數位簽章、合併或柵格化-這些功能將在後面的章節中介紹。 提示像素級調試:啟用 renderer.LoggingOptions.DebugMode = true 並按照無頭 Chrome 調試指南操作,以在渲染期間檢查即時開發者工具。 相關資源 API 參考 – ChromePdfRenderer.RenderUrlAsPdf API 參考 – PdfDocument.SaveAs 教學 –在 Docker 容器中部署IronPDF 如何在.NET Core中將原始HTML轉換為PDF? 將 HTML 字串(或Razor視圖的渲染標記)傳遞給 ChromePdfRenderer.RenderHtmlAsPdf 即可立即產生符合標準的 PDF。 此方法會啟動 IronPDF 內建的 Chromium 引擎,因此無需安裝外部瀏覽器或依賴 WebView。 下面所示的相同程式碼目前可以在.NET 8 LTS 上編譯,並且與.NET 9 和計劃於 2025 年 11 月發布的.NET 10 保持向前相容。 範例-從 HTML 片段產生 PDF // Program.cs — compatible with .NET 8 and newer using IronPdf; // Sample HTML fragment (could also be read from a file, Razor view, or CMS) const string html = """ <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Quarterly Report</title> <style> body { font-family:'Segoe UI', sans-serif; margin:1.2rem; } header { margin-bottom:2rem; } h1 { color:#3056d3; } table { width:100%; border-collapse:collapse; margin-top:1rem; } th,td { border:1px solid #ddd; padding:0.5rem; text-align:right; } tr:nth-child(even){ background-color:#f8f9fa; } </style> </head> <body> <header><h1>Q2 Revenue Summary</h1></header> <table> <thead><tr><th>Product</th><th>Revenue ($)</th></tr></thead> <tbody> <tr><td>IronPDF for .NET</td><td>1,200,000</td></tr> <tr><td>IronOCR for .NET</td><td>890,000</td></tr> <tr><td>IronXL for .NET</td><td>610,000</td></tr> </tbody> </table> </body> </html> """; // 1. Create a renderer once and reuse it across conversions var renderer = new ChromePdfRenderer { RenderingOptions = { PaperSize = PdfPaperSize.A4, // ISO-standard paper size PaperOrientation = PdfPaperOrientation.Portrait, CssMediaType = PdfCssMediaType.Screen, // Respect on-screen CSS RenderDelay = 100, // Wait 100 ms for JS/animations FallbackEncoding = "utf-8" // Handle non-ASCII correctly } }; // 2. Render the HTML fragment using PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // 3. Persist to disk or return via ASP.NET Core FileStreamResult pdf.SaveAs("q2-report.pdf"); // Program.cs — compatible with .NET 8 and newer using IronPdf; // Sample HTML fragment (could also be read from a file, Razor view, or CMS) const string html = """ <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Quarterly Report</title> <style> body { font-family:'Segoe UI', sans-serif; margin:1.2rem; } header { margin-bottom:2rem; } h1 { color:#3056d3; } table { width:100%; border-collapse:collapse; margin-top:1rem; } th,td { border:1px solid #ddd; padding:0.5rem; text-align:right; } tr:nth-child(even){ background-color:#f8f9fa; } </style> </head> <body> <header><h1>Q2 Revenue Summary</h1></header> <table> <thead><tr><th>Product</th><th>Revenue ($)</th></tr></thead> <tbody> <tr><td>IronPDF for .NET</td><td>1,200,000</td></tr> <tr><td>IronOCR for .NET</td><td>890,000</td></tr> <tr><td>IronXL for .NET</td><td>610,000</td></tr> </tbody> </table> </body> </html> """; // 1. Create a renderer once and reuse it across conversions var renderer = new ChromePdfRenderer { RenderingOptions = { PaperSize = PdfPaperSize.A4, // ISO-standard paper size PaperOrientation = PdfPaperOrientation.Portrait, CssMediaType = PdfCssMediaType.Screen, // Respect on-screen CSS RenderDelay = 100, // Wait 100 ms for JS/animations FallbackEncoding = "utf-8" // Handle non-ASCII correctly } }; // 2. Render the HTML fragment using PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // 3. Persist to disk or return via ASP.NET Core FileStreamResult pdf.SaveAs("q2-report.pdf"); $vbLabelText $csharpLabel 這段程式碼示範了什麼 -內建 Chromium -- IronPDF捆綁了Chromium 引擎,保證了HTML5、CSS3 和JavaScript與現代瀏覽器的一致性。 -單一依賴項--輕量級的NuGet安裝涵蓋 Windows、Linux、Docker 和 Azure/AWS,無需額外的系統程式庫。 -渲染選項-- CssMediaType 和 RenderDelay 鏡像瀏覽器列印設置,以便 PDF 與螢幕佈局相符。 -面向未來的目標-- .NET 8、 .NET 9 STS 和即將推出的.NET 10 的 API 介面相同,因此長期維護工作量極少。 -後處理鉤子-- PdfDocument 公開了合併、密碼保護和數位簽章的輔助函數-本指南稍後將分別介紹這些函數。 進一步閱讀:請參閱逐步HTML 字串到 PDF 教學課程和完整的ChromePdfRenderer API 文件。 如何將 ASP.NET .NET Core MVC 視圖匯出為 PDF? IronPDF以與瀏覽器相同的方式渲染完全處理的Razor視圖(.cshtml),並將結果作為 PdfDocument 串流傳輸。 以下工作流程保持控制器邏輯清晰,無需瀏覽器插件,並且適用於.NET 8 LTS、 .NET 9 預覽版以及計劃於 2025 年 11 月發布的.NET 10。 端到端控制器範例 // TicketsController.cs — .NET 8 LTS / MVC using IronPdf; using Microsoft.AspNetCore.Mvc; using YourApp.Models; // TicketViewModel public class TicketsController : Controller { private readonly ChromePdfRenderer _renderer; public TicketsController() { _renderer = new ChromePdfRenderer { RenderingOptions = { PaperSize = PdfPaperSize.A5, // Compact ticket size PaperOrientation = PdfPdfOrientation.Portrait, FitToPaperWidth = true, CssMediaType = PdfCssMediaType.Print, Margins = new PdfMargins(5, 10, 5, 10) // mm } }; } // GET /Tickets/Print/42 public async Task<IActionResult> Print(int id) { TicketViewModel vm = await _service.GetTicketAsync(id); // 1. Render the Razor view to an HTML string string html = await RazorTemplateEngine.RenderViewAsync( HttpContext, "~/Views/Tickets/Print.cshtml", vm); // 2. Convert HTML → PDF using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html); // 3. Stream back as a file return File(pdf.BinaryData, "application/pdf", $"ticket-{id}.pdf"); } } // TicketsController.cs — .NET 8 LTS / MVC using IronPdf; using Microsoft.AspNetCore.Mvc; using YourApp.Models; // TicketViewModel public class TicketsController : Controller { private readonly ChromePdfRenderer _renderer; public TicketsController() { _renderer = new ChromePdfRenderer { RenderingOptions = { PaperSize = PdfPaperSize.A5, // Compact ticket size PaperOrientation = PdfPdfOrientation.Portrait, FitToPaperWidth = true, CssMediaType = PdfCssMediaType.Print, Margins = new PdfMargins(5, 10, 5, 10) // mm } }; } // GET /Tickets/Print/42 public async Task<IActionResult> Print(int id) { TicketViewModel vm = await _service.GetTicketAsync(id); // 1. Render the Razor view to an HTML string string html = await RazorTemplateEngine.RenderViewAsync( HttpContext, "~/Views/Tickets/Print.cshtml", vm); // 2. Convert HTML → PDF using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html); // 3. Stream back as a file return File(pdf.BinaryData, "application/pdf", $"ticket-{id}.pdf"); } } $vbLabelText $csharpLabel 這段程式碼說明了什麼 -沒有臨時檔案-- Razor視圖在記憶體中渲染,然後直接傳遞給RenderHtmlAsPdf ,避免磁碟 I/O 和臨時資料夾競爭條件。 -票據大小的輸出-- PaperSize = A5 和窄邊距使在家中列印的票據保持緊湊。 -一致的列印樣式-- CssMediaType = Print 應用與瀏覽器相同的 @media print CSS 規則。 -二進位串流-- pdf.BinaryData 無需存取檔案系統即可傳輸文件; 非常適合 API 端點和 Lambda 函數。 -可重複使用的渲染器-- ChromePdfRenderer 每個控制器實例化一次,然後重複使用,從而最大限度地減少進程產生開銷。 ## Paper & Orientation `PaperSize` 、 `PaperOrientation` 、 `FitToPaperWidth` ## Margins & Headers / Footers `Margins` 、 `Header` 、 `Footer` 、 `Watermark` 下一步:新增加密、數位簽章或將多個票據合併到一個文件中。請參閱合併範例和數位簽章操作指南。 如何在渲染前微調紙張尺寸、頁邊距、頁首、浮水印和安全設定? IronPDF公開了一個 ChromePdfRenderOptions 對象,該對象控制輸出的各個方面——紙張尺寸、方向、頁眉和頁腳、 JavaScript計時、水印、加密和數位簽名——所有這些都無需額外的瀏覽器插件。 程式碼範例-一次套用多個選項 // AdvancedOptions.cs — .NET 8 compatible using IronPdf; var renderer = new ChromePdfRenderer(); // Configure everything in one place renderer.RenderingOptions = new ChromePdfRenderOptions { // 1. Page layout PaperSize = PdfPaperSize.A4, // ISO size PaperOrientation = PdfPdfOrientation.Portrait, Margins = new PdfMargins { Top = 20, Bottom = 25, Left = 15, Right = 15 }, // mm // 2. Timing & media CssMediaType = PdfCssMediaType.Print, // Respect @media print EnableJavaScript = true, RenderDelay = 200, // Wait 200 ms for animations // 3. Headers & footers (HTML gives full design freedom) HtmlHeader = "<header style='font:14px Segoe UI'>Invoice — {{date}}</header>", HtmlFooter = "<footer style='text-align:right;font-size:10px'>Page {{page}} / {{total-pages}}</footer>", // 4. Watermark Watermark = new HtmlStamp { HtmlTemplate = "<div style='font-size:50px;color:#cccccc;opacity:0.3;'>CONFIDENTIAL</div>", VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }, // 5. Security SecurityOptions = new PdfSecurityOptions { OwnerPassword = "StrongOwnerPwd!", UserPassword = "ReadOnly", AllowUserPrinting = false, AllowUserCopyPasteContent = false } }; // Render any HTML using PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Advanced Options Demo</h1>"); // Digitally sign with a PFX certificate (optional) pdf.SignAndStamp("./certs/company.pfx", "Iron Software", "Bangkok", "Approval"); // Save pdf.SaveAs("advanced-options-demo.pdf"); // AdvancedOptions.cs — .NET 8 compatible using IronPdf; var renderer = new ChromePdfRenderer(); // Configure everything in one place renderer.RenderingOptions = new ChromePdfRenderOptions { // 1. Page layout PaperSize = PdfPaperSize.A4, // ISO size PaperOrientation = PdfPdfOrientation.Portrait, Margins = new PdfMargins { Top = 20, Bottom = 25, Left = 15, Right = 15 }, // mm // 2. Timing & media CssMediaType = PdfCssMediaType.Print, // Respect @media print EnableJavaScript = true, RenderDelay = 200, // Wait 200 ms for animations // 3. Headers & footers (HTML gives full design freedom) HtmlHeader = "<header style='font:14px Segoe UI'>Invoice — {{date}}</header>", HtmlFooter = "<footer style='text-align:right;font-size:10px'>Page {{page}} / {{total-pages}}</footer>", // 4. Watermark Watermark = new HtmlStamp { HtmlTemplate = "<div style='font-size:50px;color:#cccccc;opacity:0.3;'>CONFIDENTIAL</div>", VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }, // 5. Security SecurityOptions = new PdfSecurityOptions { OwnerPassword = "StrongOwnerPwd!", UserPassword = "ReadOnly", AllowUserPrinting = false, AllowUserCopyPasteContent = false } }; // Render any HTML using PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Advanced Options Demo</h1>"); // Digitally sign with a PFX certificate (optional) pdf.SignAndStamp("./certs/company.pfx", "Iron Software", "Bangkok", "Approval"); // Save pdf.SaveAs("advanced-options-demo.pdf"); $vbLabelText $csharpLabel 這些選項為何重要 Margins 和 CssMediaType映像瀏覽器的列印對話框,因此在 Windows、Linux 和 Docker 上,螢幕佈局和 PDF 保持相同。 HTML 頁首和頁尾支援Razor代幣、CSS 和JavaScript-- 方便實現動態頁碼或品牌識別。 HtmlStamp允許使用一行程式碼建立具有完整 HTML + CSS 控制的品牌浮水印。 -安全選項支援 128 位元加密、擁有者/使用者密碼和細粒度權限,無需第三方工具。 -數位簽名直接在代碼中添加加密印章,以保持法律真實性和防篡改性。 提取輔助程序(例如 ExtractAllText 和 ExtractAllImages)在需要分析時會反轉該過程。 快速參考 — 常用設定 ## Page Layout & Media `PaperSize` 、 `PaperOrientation` 、 `Margins` 、 `CssMediaType` 、 `RenderDelay` ## Headers & Footers `HtmlHeader` 、 `HtmlFooter` 、動態Razor佔位符、頁碼標記 ## 水印 `Watermark` 、 `HtmlStamp` 、不透明度、對齊方式 ## Encryption & Signatures `SecurityOptions` 、 `SignAndStamp` 、所有者/用戶密碼、證書密封 後續任務:合併多個 PDF 文件,提取文字和映像,並部署到 Docker 或無伺服器平台。 請繼續執行部署部分,以確保跨平台一致性。 如何在Linux和Windows系統上將PDF產生程式碼部署到Docker容器中? IronPDF以單一自包含的NuGet套件的形式提供,因此在Windows 和 Linux上容器化ASP.NET Core (或控制台)應用程式非常簡單。 關鍵是將已發布的二進位檔案複製到精簡的執行時間映像中,並且在 Linux 上,新增IronPDF所需的兩個本機程式庫(libnss3 和 libatk1.0-0)。 多階段 Dockerfile(Ubuntu 22.04) 請注意為什麼需要多階段? SDK 鏡像(第一階段)編譯專案; 最終運行時鏡像(第二階段)保持精簡——小於 120 MB——因為建置工具被捨棄了。 ####### ---------- stage 1 ---------- FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY ["MyPdfApp.csproj", "."] RUN dotnet restore COPY . . RUN dotnet publish -c Release -o /app/publish ####### ---------- stage 2 ---------- FROM mcr.microsoft.com/dotnet/aspnet:8.0-jammy ######## Install two native libs required by Chromium RUN apt-get update && \ apt-get install -y --no-install-recommends libnss3 libatk1.0-0 && \ rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "MyPdfApp.dll"] Windows 容器?請將第二階段替換為 mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022——由於 Chromium DLL 已打包,因此無需其他軟體包。 端對端驗證腳本 docker build -t pdf-demo . docker run --rm -p 8080:80 pdf-demo ######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com docker build -t pdf-demo . docker run --rm -p 8080:80 pdf-demo ######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com SHELL API 操作內部呼叫 ChromePdfRenderer.RenderUrlAsPdf,就像第 2 部分一樣。 IronPDF在容器內啟動其沙盒化的 Chromium 進程——由於它是無頭渲染,因此不需要 X 伺服器。 即使在進行大型渲染時,記憶體佔用也保持在 200 MB 以下。 提示故障排除提示:如果容器日誌顯示"找不到 libnss3.so"錯誤,請確認 libnss3 和 libatk1.0-0 都存在。 由於 musl C 庫缺少必要的符號,因此不支援 Alpine 鏡像。 內部資源 教學 –在 Docker 容器中部署IronPDF 操作指南 –在 Azure 應用服務 Linux 上執行IronPDF API 參考 – ChromePdfRenderer 類 如何在.NET Core中開啟、合併、新增浮水印和提取現有PDF的內容? IronPDF將每個 PDF 檔案(無論是IronPDF、Adobe® Acrobat 或第三方工具產生的 PDF 檔案)視為一流的 PdfDocument 對象,可以開啟、編輯、保護和重新儲存而不會損失品質。 同樣的 API 介面目前在.NET 8 LTS 上運作良好,並且在.NET 9 預覽版和即將發布的.NET 10 版本中無需任何修改即可編譯。 統一樣本 — 開啟 → 合併 → 新增浮水印 → 擷取 // ManipulateExistingPdf.cs — .NET 8 LTS compatible using IronPdf; using System.Linq; // Step 1: Open two existing files (password-protected PDFs are supported) PdfDocument invoice = PdfDocument.FromFile("invoice.pdf", "ReadOnly"); // open with user pwd PdfDocument tAndCs = PdfDocument.FromFile("terms.pdf"); // no pwd required // Step 2: Merge them (invoice pages first, then T&Cs) PdfDocument mergedPdf = PdfDocument.Merge(invoice, tAndCs); // 1-liner merge // Step 3: Apply a diagonal CONFIDENTIAL watermark to every page mergedPdf.ApplyStamp( "<div style='font-size:60px;color:#d9534f;opacity:0.2;transform:rotate(-45deg);" + "width:100%;text-align:center;'>CONFIDENTIAL</div>", verticalAlignment : VerticalAlignment.Center, horizontalAlignment : HorizontalAlignment.Center); // Step 4: Extract all text and the first image for audit purposes string fullText = mergedPdf.ExtractAllText(); var image = mergedPdf.ExtractAllImages().FirstOrDefault(); // Step 5: Save or stream mergedPdf.SaveAs("invoice-with-terms.pdf"); // ManipulateExistingPdf.cs — .NET 8 LTS compatible using IronPdf; using System.Linq; // Step 1: Open two existing files (password-protected PDFs are supported) PdfDocument invoice = PdfDocument.FromFile("invoice.pdf", "ReadOnly"); // open with user pwd PdfDocument tAndCs = PdfDocument.FromFile("terms.pdf"); // no pwd required // Step 2: Merge them (invoice pages first, then T&Cs) PdfDocument mergedPdf = PdfDocument.Merge(invoice, tAndCs); // 1-liner merge // Step 3: Apply a diagonal CONFIDENTIAL watermark to every page mergedPdf.ApplyStamp( "<div style='font-size:60px;color:#d9534f;opacity:0.2;transform:rotate(-45deg);" + "width:100%;text-align:center;'>CONFIDENTIAL</div>", verticalAlignment : VerticalAlignment.Center, horizontalAlignment : HorizontalAlignment.Center); // Step 4: Extract all text and the first image for audit purposes string fullText = mergedPdf.ExtractAllText(); var image = mergedPdf.ExtractAllImages().FirstOrDefault(); // Step 5: Save or stream mergedPdf.SaveAs("invoice-with-terms.pdf"); $vbLabelText $csharpLabel 為什麼這很重要 -開啟並合併– PdfDocument.FromFile 載入任何符合標準的 PDF,包括加密文件,而 PdfDocument.Merge 可在一次呼叫中連接任意數量的文件。 -浮水印– ApplyStamp(別名 HtmlStamp)在選定的頁面上嵌入完全樣式化的 HTML/CSS 疊加層-標誌、二維碼或對角線文字-而無需柵格化。 -內容擷取– ExtractAllText 和 ExtractAllImages 擷取原始 UTF-8 文字或二進位影像流,用於下游歸檔或 AI 管道。 -數位簽章已準備就緒– 同一個 PdfDocument 實例可用 SignAndStamp 進行密封,產生符合 RFC 3161 標準且與ISO 32000-2 數位簽章要求一致的雜湊值。 -開放標準合規性– IronPDF保留了原始 PDF 結構(字體、圖層、XMP 元資料),因此輸出與 Adobe® Reader 和其他ISO 32000-1檢視器相容。 -面向未來– 該 API 避免了互通組件和 Win32 GDI 調用,因此程式碼可以在 Windows、Linux、Docker 和即將推出的.NET 10 無伺服器 SKU 上保持不變地運行。 需要拆分、旋轉或刪除頁面?請參閱頁面層級編輯教學課程,以了解更細緻的操作。 如何在.NET Core中對PDF進行加密和數位簽章? IronPDF透過兩步驟保護文件:基於 AES 的加密(使用者/所有者密碼 + 細粒度權限)和X.509 數位簽名,使用加密雜湊對檔案進行密封。 這兩個 API 都存在於同一個 PdfDocument 物件上,因此在今天的.NET 8 LTS 上工作流程是相同的,並且在.NET 9 預覽版和即將發布的.NET 10 版本上編譯也不會改變。 範例-套用 256 位元 AES 加密,鎖定列印權限,並新增可見簽名 // SecureAndSign.cs — .NET 8 LTS compatible using IronPdf; // Step 1: Load an existing PDF (or produce one with RenderHtmlAsPdf) PdfDocument pdf = PdfDocument.FromFile("financial-report.pdf"); // Step 2: Configure AES-256 encryption & permissions pdf.SecuritySettings = new PdfSecuritySettings { EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256Bit, OwnerPassword = "IronAdmin!2025", UserPassword = "ReadOnly", AllowUserPrinting = PdfPrintSecurity.Disabled, AllowUserCopyPasteContent = false, AllowUserAnnotations = false }; // Step 3: Digitally sign with a PFX certificate pdf.SignAndStamp( certificatePath : "./certs/ironsoftware.pfx", authority : "Iron Software Ltd.", location : "Chicago, IL", reason : "Final approval" ); // Step 4: Persist or stream pdf.SaveAs("financial-report-secured-signed.pdf"); // SecureAndSign.cs — .NET 8 LTS compatible using IronPdf; // Step 1: Load an existing PDF (or produce one with RenderHtmlAsPdf) PdfDocument pdf = PdfDocument.FromFile("financial-report.pdf"); // Step 2: Configure AES-256 encryption & permissions pdf.SecuritySettings = new PdfSecuritySettings { EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256Bit, OwnerPassword = "IronAdmin!2025", UserPassword = "ReadOnly", AllowUserPrinting = PdfPrintSecurity.Disabled, AllowUserCopyPasteContent = false, AllowUserAnnotations = false }; // Step 3: Digitally sign with a PFX certificate pdf.SignAndStamp( certificatePath : "./certs/ironsoftware.pfx", authority : "Iron Software Ltd.", location : "Chicago, IL", reason : "Final approval" ); // Step 4: Persist or stream pdf.SaveAs("financial-report-secured-signed.pdf"); $vbLabelText $csharpLabel 幕後花絮 AES-256 加密-- IronPDF使用 NIST 核准的AES 金鑰對有效載荷進行封裝,阻止未經授權的開啟、列印或複製貼上。 -權限粒度-- 諸如AllowUserPrinting 和 AllowUserFormData之類的屬性切換每個操作的權限; 任何限制措施都需要所有者密碼才能生效。 -數位簽章-- SignAndStamp 嵌入 RFC 3161 時間戳與憑證鏈,建立 Adobe® Acrobat 和其他 ISO 32000-2 檢視器可識別的防篡改雜湊值。 -一站式 API -- 加密和簽名都修改同一個 PdfDocument 實例,避免多次文件傳遞,並保留內部字體、圖層和元資料。 提示故障排除提示:如果 Adobe Reader 報告"無效簽名",請確保 PFX 檔案包含受信任的根證書,並且 location 字串符合 ASCII 編碼規範。 核心安全設定 ## Encryption & Passwords `PdfSecuritySettings` → `OwnerPassword` 、 `UserPassword` 、 `EncryptionAlgorithm` 、 `AllowUserPrinting` ## 數位簽名 `PdfDocument.SignAndStamp` — PFX 路徑、權限、位置、原因、時間戳 用於深入研究的內部資源 教學課程-如何為PDF檔案設定密碼保護 -範例–對 PDF 檔案進行數位簽名 API 參考– PdfSecuritySettings 如何在.NET Core中優化和擴展 HTML 到 PDF 的效能? IronPDF 的 Chromium 引擎在現代硬體上已經可以在不到 1 秒的時間內渲染大多數頁面,但透過大量渲染、啟用多執行緒和減少無頭 Chrome 開銷,吞吐量可以倍增。 以下提示同樣適用於所有.NET版本。 1. 在後台執行緒池上進行批次渲染 // BatchRender.cs — Thread-safe on .NET 8+ using IronPdf; using System.Threading.Tasks; var htmlSources = Directory.GetFiles("./html", "*.html"); var renderer = new ChromePdfRenderer(); // reuse 1 instance Parallel.ForEach(htmlSources, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, file => { string html = File.ReadAllText(file); using PdfDocument pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(Path.ChangeExtension(file, ".pdf")); }); // BatchRender.cs — Thread-safe on .NET 8+ using IronPdf; using System.Threading.Tasks; var htmlSources = Directory.GetFiles("./html", "*.html"); var renderer = new ChromePdfRenderer(); // reuse 1 instance Parallel.ForEach(htmlSources, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, file => { string html = File.ReadAllText(file); using PdfDocument pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(Path.ChangeExtension(file, ".pdf")); }); $vbLabelText $csharpLabel ChromePdfRenderer 是線程安全的; 單一實例可以同時處理數十個任務而不會發生死鎖。 Parallel.ForEach 使每個 CPU 核心飽和; 與單線程循環相比,典型伺服器的吞吐量可提高 4-6 倍。 如果ASP.NET請求排隊, 請將繁重的渲染任務移至託管的後台服務或訊息佇列,以保持較低的回應時間。 2. 降低無頭Chrome的啟動成本 IronPDF自備 Chromium 版本,但每次渲染都會產生少量啟動費用。 使用連線池會有所幫助, Linux 容器必須包含兩個本機程式庫: RUN apt-get update && \ apt-get install -y --no-install-recommends libnss3 libatk1.0-0 Missing either library manifests as a libnss3.so not found error in Docker logs. Recommended Chrome flags (automatically applied by IronPDF) include --disable-gpu and --no-sandbox to reduce memory and root-user issues in containers. 3. 使用 RenderDelay 或 WaitFor 等待延遲的JavaScript 在 DOMContentLoaded 之後,需要動畫計數器或取得資料的頁面可能需要短暫延遲: renderer.RenderingOptions.RenderDelay = 200; // ms // OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')"; renderer.RenderingOptions.RenderDelay = 200; // ms // OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')"; $vbLabelText $csharpLabel 有關自訂 Promise 和 DOM 輪詢的專門WaitFor 教程,請參閱相關文件。 4. 為一個請求啟用調試日誌記錄 renderer.LoggingOptions.DebugMode = true; renderer.LoggingOptions.LogsToConsole = true; renderer.LoggingOptions.LogFilePath = "./logs/ironpdf-debug.log"; renderer.LoggingOptions.DebugMode = true; renderer.LoggingOptions.LogsToConsole = true; renderer.LoggingOptions.LogFilePath = "./logs/ironpdf-debug.log"; $vbLabelText $csharpLabel 即時 DevTools 追蹤可以顯示缺少的字體、404 圖像和計時事件,而無需重新編譯程式碼。 5. 重複使用範本PDF,而不是重新渲染 對於發票運行,建立一個帶有佔位符(如 [[name]])的模板 PDF ,並執行文字替換,而不是重建複雜的 HTML。 速度提升 10 倍,而且佔用記憶體更少。 快速調校檢查清單 ## Multi-Thread & Async `Parallel.ForEach` 、 `async/await` 、重用單一`ChromePdfRenderer` ## Docker 優化映像 使用`aspnet:8.0-jammy` ;安裝`libnss3` + `libatk1.0-0` ;標誌`--no-sandbox` , `--disable-gpu` ## JavaScript計時 `RenderDelay` 、 `WaitFor()` 、記錄 DevTools 時間軸以了解 SPA 的緩慢水合情況 延伸閱讀 操作指南 – 如何使用非同步/多執行緒產生 PDF 故障排除 –效能協助中心 範例 –線程渲染演示 我可以在哪裡下載免費試用版、選擇授權並獲得專家支援? {#anchor-10-resources} 透過"開始免費試用"表單即可立即獲得30 天試用金鑰,解鎖所有功能(包括 HTML 轉 PDF、數位簽章和加密),且不含浮水印。 評估庫之後,選擇永久開發者許可證、部署許可證或企業許可證; 每個套餐都包含免費的小版本更新、開發/測試/生產環境使用權以及 30 天退款保證。 應用金鑰只需一行程式碼(IronPdf.License.LicenseKey = "YOUR-KEY";),並且可以在 CI/CD 管道中自動化。 全面的文件——快速入門指南、 API 參考和教學影片——位於文件門戶,並會隨著每個.NET版本的發布而更新。 工程方面的問題可以透過線上聊天、電子郵件或電話在一個工作天內得到芝加哥支援團隊的回應。 效能調優和部署常見問題匯總在效能幫助中心。 快速連結 資源 URL 為什麼這很重要 取得 30 天試用金鑰 https://ironpdf.com/demos/ 解鎖所有功能,無浮水印 授權和定價 https://ironpdf.com/licensing/ 永久或訂閱計劃; Iron Suite捆綁了 10 個庫 API 參考 https://ironpdf.com/object-reference/api/ 完整的課程文檔,例如 ChromePdfRenderer 文件入口網站 https://ironpdf.com/docs/ 指南、教學、範例項目 績效輔助 https://ironpdf.com/troubleshooting/ironpdf-performance-assistance/ 優化和擴展技巧 聯絡客服 https://ironsoftware.com/contact-us/ 線上聊天、電子郵件、電話支持 下一步 克隆範例儲存庫,其中演示了所有主要功能——從 MVC 視圖渲染到 AES-256 加密。 2.將試用金鑰插入現有解決方案並執行單元測試以驗證跨平台相容性。 與工程團隊預約現場演示,以獲取特定項目的建議。 有了這些資源,任何.NET團隊都可以在一個迭代周期內將像素級完美的 PDF 交付到生產環境——無論是在本地、Docker 還是無伺服器環境中。 常見問題解答 如何在 .NET Core 中將 HTML 轉換為 PDF? 您可以使用 IronPDF 庫在 .NET Core 中將 HTML 轉換為 PDF。首先,安裝 IronPDF 的 NuGet 套件,然後創建一個 ChromePdfRenderer 實例。使用 RenderHtmlAsPdf 方法來將 HTML 字串轉換為 PDF。 如何將網站 URL 轉換為 PDF 文檔? 要將網站 URL 轉換為 PDF 文檔,請安裝 IronPDF NuGet 套件,創建一個 ChromePdfRenderer 實例,然後使用 RenderUrlAsPdf 方法將 URL 轉換為 PDF。結果可以使用 SaveAs 方法保存。 轉換 Razor 視圖為 PDF 的最佳方法是什麼? 轉換 Razor 視圖為 PDF 的最佳方法是使用 IronPDF。首先,將 Razor 視圖渲染為 HTML 字串,然後將此字串傳遞給 RenderHtmlAsPdf 方法以創建 PDF 文檔。 如何增強我的 PDF 文檔的安全性? 通過使用 IronPDF 應用 AES-256 加密、設置密碼和控制用戶許可權來增強 PDF 安全性。通過 SecuritySettings 屬性配置這些設定以限制打印和編輯等操作。 有哪些選項可以自訂 PDF 渲染? IronPDF 提供了多種渲染選項,可以使用 ChromePdfRenderOptions 類設置紙張大小、方向、邊距和應用 CSS 媒體類型。您還可以添加頁眉、頁腳和水印以自訂文件輸出。 如何在 Docker 容器中部署 PDF 生成應用程序? 要在 Docker 容器中部署 PDF 生成應用程序,請在 Dockerfile 中配置 Linux 依賴項並設定用戶許可權。使用 IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig 自動管理依賴項。 如何使用 C# 向 PDF 添加水印? 您可以使用 IronPDF 利用 Watermark 屬性和 HtmlStamp 對象向 PDF 添加水印。對於高級選項,可以使用 HtmlStamper 類來進行自定義定位和透明效果。 我可以為 PDF 文檔添加數位簽名嗎? 是的,您可以使用 IronPDF 的 PdfSignature 類為 PDF 添加數位簽名。對 PdfDocument 使用 Sign 方法並提供證書文件以確保文檔的完整性和真實性。 如何在 .NET Core 中優化 PDF 生成性能? 通過重用一個線程安全的 ChromePdfRenderer 實例、啟用多線程和修剪不必要的無頭 Chrome 啟動標誌來優化 PDF 生成性能。這些做法有助於提高您的應用程序的效率。 本教學中的 .NET Core HTML 轉 PDF 範例是否也適用於 .NET 10? 是的。 IronPDF 完全相容於 .NET 10,因此您可以在 .NET 10 專案中使用本教學中的 ChromePdfRenderer HTML 轉 PDF 範例,而無需更改核心程式碼。主要差異在於,您需要在建立專案時指定目標框架為 .NET 10,然後從 NuGet 安裝最新的 IronPDF 包,即可從 HTML、Razor 視圖或 URL 產生像素級精確的 PDF 檔案。 Jacob Mellor 立即與工程團隊聊天 首席技術官 Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。 審核人 Jeffrey T. Fritz 首席程序经理 - .NET 社群团队 Jeff 也是 .NET 和 Visual Studio 团队的首席程序经理。他是 .NET Conf 虚拟会议系列的执行制作人,并主持“Fritz 和朋友”这一每周两次的開發者的直播节目,在节目上讨论技術并与观众一起编写代碼。Jeff 撰写研讨会、主持演讲,并计划大型 Microsoft 開發者活動(包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit)的內容。 準備好開始了嗎? Nuget 下載 17,803,474 | 版本: 2026.3 剛剛發布 開始免費試用 免費 NuGet 下載 總下載量:17,803,474 查看許可證 還在滾動嗎? 想快速取得證據? PM > Install-Package IronPdf 運行範例看著你的HTML程式碼變成PDF檔。 免費 NuGet 下載 總下載量:17,803,474 查看許可證