跳過到頁腳內容
USING IRONPDF

C# PDFWriter Tutorial: Create PDF Documents in .NET

IronPDF 透過將 HTML 轉換為 PDF 來簡化在 C# 中建立 PDF 的過程,使開發人員能夠以最少的程式碼產生專業的 PDF,避免手動定位或過多的樣板程式碼。

過去,用 C# 程式設計方式建立 PDF 文件是一項挑戰。 大多數 C# PDFWriter 解決方案都涉及複雜的 API 和大量的樣板程式碼,只是為了產生一個簡單的PDF 檔案。 如果你嘗試過一些較老的開源函式庫,你就會知道記憶體洩漏效能問題有多麼令人沮喪。

IronPDF改變了這一切。 只需幾行程式碼,即可建立 PDF 文檔,新增頁面、段落、圖像、標題和頁碼,並儲存它們,而無需處理底層細節。 該庫支援非同步操作以提高效能,並支援多執行緒以進行批次處理。

在本文中,我們將向您展示如何使用 IronPDF 的文檔物件ChromePdfRenderer和 PDF 生成方法,直接從 Visual Studio 在 .NET Framework 或 .NET Core 中建立專業的 PDF 文件。 到最後,你將能夠產生自己的 PDF 文件,無論是簡單的"Hello World"測試,還是帶有自訂字體嵌入式圖像的完整發票。

C# 中的 PDFWriter 是什麼?

PDFWriter 是一個文件對象,它允許開發人員產生 PDF 文件、新增段落、圖像、標題以及以程式設計方式操作頁面。 傳統圖書館通常需要手動定位、複雜的運算和明確的資源管理。 他們可能還會遇到國際語言UTF-8 支援方面的問題。

IronPDF 簡化了這一切。 您可以使用 HTML 內容和 CSS,透過簡單的程式碼,在熟悉的 C# 環境中(例如典型的控制台應用程式)或使用MemoryStream等標準類別來建立 PDF 文件。 此程式庫可自動處理字體字距調整元資料管理

有些函式庫,如 iTextSharp,有一個名為PdfWriter類,但在 C# 中,術語 PDFWriter 通常指的是以程式設計方式產生 PDF 文件的任何元件或函式庫。 如果您正在比較各種選項,請查看IronPDF 與 iText 的比較情況,或查看與AsposeSyncfusionQuestPDF的比較,以獲得詳細的功能分析。

從低層次的操作轉向高層次的創造可以提高生產力。 在 Visual Studio 或 IDE 中新建一個PdfDocument實例,即可用最少的程式碼建立 PDF 檔案。 Chrome 渲染引擎確保每次都能實現像素級的完美輸出,支援現代CSS 媒體類型響應式佈局

如下所示,傳統的 PDFWriter 函式庫(如 iTextSharp)需要大量的樣板程式碼,而 IronPDF 只需幾行程式碼即可產生相同的 PDF 文件——速度更快、更簡單、更不容易出錯。 該程式庫還提供自訂日誌記錄選項和原生異常處理,以便於偵錯。

如何在 C# 專案中安裝 IronPDF?

使用 IronPDF 入門只需不到一分鐘。 最簡單的安裝方法是使用 NuGet 套件管理器:

Install-Package IronPdf

或者,在 Visual Studio 中:

  1. 在解決方案資源管理器中以滑鼠右鍵按一下您的專案。
  2. 選擇"管理 NuGet 套件"
  3. 搜尋"IronPDF"
  4. 點選安裝

有關特定平台的詳細安裝,請查看IronPDF 安裝指南進階 NuGet 配置。 如果您要部署到AzureAzure FunctionsAWSAWS Lambda ,或需要在 Docker 中執行 IronPDF ,我們針對每種環境都有專門的指南。 對於Linux 部署(包括Red Hat Enterprise Linux或基於 Intel 和 Apple Silicon 的macOS 安裝),可能需要額外的相依性。 您也可以使用Windows Installer進行手動安裝。

如何使用 IronPDF 建立您的第一個 PDF 檔案?

與傳統的 PDFWriter 實作不同,在 IronPDF 中,您不需要單獨的 PDFWriter 類別變數。 渲染器和PdfDocument物件在內部處理所有寫入任務。 以下是一個完整的運行範例:

using IronPdf;
// Instantiate the PDF renderer
var renderer = new ChromePdfRenderer();
// Create PDF from HTML string
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is my first PDF!</p>");
// Save the PDF
pdf.SaveAs("output.pdf");
using IronPdf;
// Instantiate the PDF renderer
var renderer = new ChromePdfRenderer();
// Create PDF from HTML string
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is my first PDF!</p>");
// Save the PDF
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

ChromePdfRenderer在內部處理所有複雜性,將您的內容以像素級精度渲染到新文件中。 如果您需要處理流程而不是文件,或者需要從記憶體載入 PDF進行處理,也可以將 PDF 匯出到記憶體

// Save to MemoryStream instead of file
using (var ms = pdf.Stream)
{
    // Use the stream as needed
    byte[] pdfBytes = ms.ToArray();
}
// Save to MemoryStream instead of file
using (var ms = pdf.Stream)
{
    // Use the stream as needed
    byte[] pdfBytes = ms.ToArray();
}
$vbLabelText   $csharpLabel

您也可以將 PDF 檔案儲存為不同的格式,例如用於存檔的 PDF/A 格式用於輔助功能的 PDF/UA 格式,或具有特定PDF 版本相容性的格式

// Save as PDF/A-3b for long-term archival
pdf.SaveAsPdfA("archived-document.pdf");

// Convert to linearized PDF for fast web viewing
pdf.SaveAsLinearized("web-improve.pdf");
// Save as PDF/A-3b for long-term archival
pdf.SaveAsPdfA("archived-document.pdf");

// Convert to linearized PDF for fast web viewing
pdf.SaveAsLinearized("web-improve.pdf");
$vbLabelText   $csharpLabel

注意:只需幾行程式碼,即可輕鬆新增圖像、新頁面、標題和段落,使用 IronPDF 的方法和文件物件功能。 此函式庫支援嵌入式資源的base64 編碼和內聯影像的資料 URI

如何將HTML轉換為PDF文件?

IronPDF 的真正威力體現在產生複雜的 PDF 文件上。 無論是將現有網頁中的HTML 轉換為 PDF ,或是建立動態報告,HTML 到 PDF 的轉換都能保持完全的保真度。 該程式庫支援Bootstrap 和 Flexbox CSSSVG 圖形WebGL 內容

// Convert a URL to PDF
var urlPdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_55___");
urlPdf.SaveAs("website.pdf");
// Convert an HTML file with IronPDF's PDF writer
var filePdf = renderer.RenderHtmlFileAsPdf("example-invoice.html");
filePdf.SaveAs("invoice.pdf");
// Use advanced rendering options for your C# PDF generator
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Environment;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Wait for dynamic content
// Convert a URL to PDF
var urlPdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_55___");
urlPdf.SaveAs("website.pdf");
// Convert an HTML file with IronPDF's PDF writer
var filePdf = renderer.RenderHtmlFileAsPdf("example-invoice.html");
filePdf.SaveAs("invoice.pdf");
// Use advanced rendering options for your C# PDF generator
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Environment;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Wait for dynamic content
$vbLabelText   $csharpLabel

此渲染器支援完整的 CSS3、JavaScript 執行和響應式佈局。 這樣可以確保您的PDF文件看起來完全符合預期。 有關渲染選項的更多詳細信息,請參閱IronPDF 文件。 您還可以輕鬆轉換 HTML 檔案HTML 字串,甚至HTML ZIP 檔案

對於需要身份驗證的網站,IronPDF 支援TLS 網站和系統登入以及Kerberos 身份驗證。 您可以為 API 存取新增自訂 HTTP 請求標頭JavaScript 渲染功能可確保動態內容正確渲染,並支援自訂渲染延遲JavaScript 訊息監聽器以應對進階場景。

HTML文件輸出是什麼樣的?

分割視圖,左側顯示 HTML 發票範本程式碼,右側顯示產生的 PDF 預覽,示範 HTML 到 PDF 的轉換。

如何使用 IronPDF 產生真實世界的 PDF 文件?

在 C# 中,實際的 PDF 產生通常涉及動態資料。 以下是如何使用 IronPDF 的PDF 建立 API建立專業發票的方法。 以下程式碼示範如何使用自訂紙張尺寸進階格式產生 PDF 報表

string invoiceHtml = $@"
    <html>
    <head>
        <style>
            body {{ font-family: Arial; }}
            .header {{ background: #f0f0f0; padding: 20px; }}
            .total {{ font-weight: bold; font-size: 18px; }}
        </style>
    </head>
    <body>
        <div class='header'>
            <h1>Invoice #{invoiceNumber}</h1>
            <p>Date: {DateTime.Now:yyyy-MM-dd}</p>
        </div>
        <table>
            <tr><td>Product</td><td>Quantity</td><td>Price</td></tr>
            {GenerateLineItems()}
        </table>
        <p class='total'>Total: ${totalAmount:F2}</p>
    </body>
    </html>";
// Use IronPDF's C# PDF writer to create the document
var invoicePdf = renderer.RenderHtmlAsPdf(invoiceHtml);
// Apply digital signature for authenticity
invoicePdf.Sign(new PdfSignature("cert.pfx", "password"));
invoicePdf.SaveAs($"invoice-{invoiceNumber}.pdf");
string invoiceHtml = $@"
    <html>
    <head>
        <style>
            body {{ font-family: Arial; }}
            .header {{ background: #f0f0f0; padding: 20px; }}
            .total {{ font-weight: bold; font-size: 18px; }}
        </style>
    </head>
    <body>
        <div class='header'>
            <h1>Invoice #{invoiceNumber}</h1>
            <p>Date: {DateTime.Now:yyyy-MM-dd}</p>
        </div>
        <table>
            <tr><td>Product</td><td>Quantity</td><td>Price</td></tr>
            {GenerateLineItems()}
        </table>
        <p class='total'>Total: ${totalAmount:F2}</p>
    </body>
    </html>";
// Use IronPDF's C# PDF writer to create the document
var invoicePdf = renderer.RenderHtmlAsPdf(invoiceHtml);
// Apply digital signature for authenticity
invoicePdf.Sign(new PdfSignature("cert.pfx", "password"));
invoicePdf.SaveAs($"invoice-{invoiceNumber}.pdf");
$vbLabelText   $csharpLabel

這種方法結合了 HTML 範本的靈活性和 PDF 輸出的可靠性,使其成為產生發票、報告、憑證和其他商業文件的理想選擇。 了解更多關於在 ASP.NET 中建立 PDF 報告的資訊。 您甚至可以在 MVC 應用程式中將CSHTML 轉換為 PDF ,使用Razor Pages進行動態內容生成,或以無頭方式渲染 CSHTML以進行伺服器端處理。 對於Blazor 應用程序,IronPDF 提供流暢的整合。

產生的發票是什麼樣子的?

產生的 PDF 發票截圖,顯示發票編號 12345,包含範例產品條目和總金額 250.75 美元

哪些進階功能可以提升您的 PDFWriter 效能?

IronPDF 除了基本的 PDF 創建功能外,還具備企業級功能:

頁首和頁尾:使用HtmlHeaderFooter新增頁碼和品牌標識,支援經典文字頁首基於 HTML 的頁首。 數位簽章:使用加密簽章保護文檔,包括HSM 簽章修訂歷史記錄 浮水印:使用ApplyStamp()新增影像或自訂文字浮水印,支援多個浮水印新的內容浮水印。 加密:使用密碼保護PDF解密功能保護敏感內容 表單欄位:建立帶有互動元素的可填寫 PDF 表單編輯現有表單 頁面操作:輕鬆合併分割建立自訂頁面尺寸旋轉頁面

以下是一個在 C# PDF 文件中添加帶有頁碼的頁眉的實際範例:

// Configure headers for your .NET PDF writer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Annual Report 2024</div>",
    MaxHeight = 25
};
// Add page numbers to PDF programmatically
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
// Add watermark for draft documents
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    DrawDividerLine = true,
    LeftText = "CONFIDENTIAL",
    RightText = "{date} {time}"
};
// Configure headers for your .NET PDF writer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Annual Report 2024</div>",
    MaxHeight = 25
};
// Add page numbers to PDF programmatically
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
// Add watermark for draft documents
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    DrawDividerLine = true,
    LeftText = "CONFIDENTIAL",
    RightText = "{date} {time}"
};
$vbLabelText   $csharpLabel

為了更好地控製文件佈局,您可以設定自訂邊距、定義自訂紙張尺寸或調整頁面方向目錄功能會自動為較長的文件產生導航。 您也可以轉換 PDF 頁面繪製線條和矩形,或直接向現有 PDF新增文字和點陣圖

使用此功能,您可以產生帶有頁腳頁碼和自訂頁眉的 PDF 檔案。 為了演示,我將從 HTML 字串建立一個簡單的多頁 PDF,以演示HTML 到 PDF 的分頁符號頁碼格式

// Generate long HTML content to create multiple pages for demonstration
// Multi-page HTML with explicit page breaks
string multiPageHtml = "";
for (int i = 1; i <= 5; i++) // 5 pages
{
    multiPageHtml += $@"
            <div style='page-break-after: always;'>
                <h1>Section {i}</h1>
                <p>This is section {i} of the report. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                This content will appear on its own page thanks to the CSS page-break.</p>
            </div>";
}
//render HTML string a PDF
var multipagePdf = renderer.RenderHtmlAsPdf(multiPageHtml);
//save PDF
multipagePdf.SaveAs("multiPageReport.pdf");
// Generate long HTML content to create multiple pages for demonstration
// Multi-page HTML with explicit page breaks
string multiPageHtml = "";
for (int i = 1; i <= 5; i++) // 5 pages
{
    multiPageHtml += $@"
            <div style='page-break-after: always;'>
                <h1>Section {i}</h1>
                <p>This is section {i} of the report. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                This content will appear on its own page thanks to the CSS page-break.</p>
            </div>";
}
//render HTML string a PDF
var multipagePdf = renderer.RenderHtmlAsPdf(multiPageHtml);
//save PDF
multipagePdf.SaveAs("multiPageReport.pdf");
$vbLabelText   $csharpLabel

其他功能包括PDF 安全清理PDF 扁平化(使表單無法編輯)和線性化(實現快速網頁瀏覽)。 您也可以使用PDF DOM 物件縮放 PDF 物件平移 PDF 物件以進行精確控制。

如需進行更多自訂,您可以新增文字和圖像印章合併或分割 PDF ,甚至可以從現有 PDF 中提取文字和圖像。 該庫還支援UTF-8 和國際語言,使其適用於全球應用。 對於特定格式,您可以將XML 轉換為 PDFMarkdown 轉換為 PDFRTF 轉換為 PDFDOCX 轉換為 PDF

最終PDF檔案中頁碼是如何顯示的?

! PDF 檢視器顯示"MultiPageReport.pdf"的兩頁展開圖,第 1 部分和第 2 部分標題包含 Lorem ipsum 文本,以 75% 的縮放比例顯示。

為什麼選擇 IronPDF 來滿足您的 C# PDF 生成需求?

IronPDF 讓 C# 中的 PDF 產生變得簡單可靠。 你不需要專門的PdfWriter類別; 相反,渲染器和PdfDocument物件會處理從 HTML 內容到頁面大小、頁首和頁腳的一切。 無論您是建立發票、報告還是憑證以整合到 Microsoft Office 中,IronPDF 都能協助您僅使用幾行程式碼完成這項工作。 該庫支援高容量場景的平行處理和響應式應用程式的非同步操作

憑藉完整的文件、強大的支援選項(包括工程支援)和免費試用版,入門非常簡單。 您可以輕鬆嘗試新的 PDF 文件、新增圖像或調整字體大小和頁面佈局。 IronPDF 將 PDF 創建從技術性工作轉變為流暢、高效的工作流程。 該庫提供演示來展示其功能,並提供複雜場景的教程

該庫擅長常見任務,例如將圖像轉換為 PDF(包括多幀 TIFF 支援) 、處理響應式 CSS以及支援Web 字體和圖示。 為了進行調試,您可以使用 Chrome 調試 HTML ,以確保輸出完美無誤。 進階功能包括用於智慧型 PDF 處理的OpenAI 整合Azure Blob 儲存支援以及用於實體輸出的列印功能

對於部署,IronPDF 提供了IIS 配置ClickOnce 部署軟體安裝程式整合的指南。 該程式庫還支援MAUI 應用程式Android 部署,適用於行動場景。

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

準備好實現 C# PDF 編寫工作流程的現代化了嗎? 立即開始免費試用,體驗 IronPDF 如何簡化 .NET 中的 PDF 建立。 憑藉完整的文件API 參考和快速回應的支持,您將在幾分鐘內(而不是幾小時)產生專業的 PDF 文件。 查看我們的更新日誌,以了解最新更新和即將推出的功能里程碑

立即使用IronPDF革新您的文件建立方式,加入數千名已使用 C# 產生現代 PDF 的開發人員的行列。 無論您是使用VB.NETF#Blazor ,IronPDF 都能滿足您的需求。

常見問題解答

什麼是 C# PDFWriter?

C# PDFWriter 是一種可讓開發人員使用 C# 程式語言以程式化方式建立 PDF 文件的工具。

開發人員為何要選擇 C# PDFWriter?

開發人員應該選擇 C# PDFWriter,因為它簡化了建立 PDF 的流程,減少了對複雜 API 和模板程式碼的需求。

IronPDF 如何增強 C# 中的 PDF 創建功能?

IronPDF 提供簡化的 API,讓開發人員更容易在 C# 應用程式中直接產生、處理和自訂 PDF 文件。

較舊的開放原始碼程式庫有哪些挑戰?

較舊的開放原始碼程式庫通常具有複雜的 API,並需要大量的模板程式碼,使得 PDF 的建立變得繁瑣且耗時。

IronPDF 可以處理複雜的 PDF 製作工作嗎?

是的,IronPDF 旨在高效地處理簡單和複雜的 PDF 創建任務,並提供大量自訂和自動化功能。

與其他 PDF 函式庫相比,使用 IronPDF 有哪些優點?

IronPDF 提供用戶友好的 API、全面的說明文件,以及可縮短開發時間並提昇 PDF 輸出品質的強大功能。

IronPDF 是否適合 C# 開發的初學者?

是的,IronPDF 適合初學者使用,因為它透過直接的程式碼範例和廣泛的支援資源簡化了 PDF 的建立。

IronPDF 如何與 .NET 應用程式整合?

IronPDF for .NET 可與 .NET 應用程式無縫整合,讓開發人員使用 C# 直接在專案中加入 PDF 功能。

使用 IronPDF 的開發人員可以獲得哪些支援?

使用 IronPDF 的開發人員可以存取全面的文件、社群論壇和技術支援,以協助解決任何開發上的難題。

IronPDF 可以同時用於網頁和桌面應用程式嗎?

是的,IronPDF 可以用於 Web 和桌面應用程式,在不同平台上生成和管理 PDF 的方式具有靈活性。

IronPDF 是否支持最新的 .NET 10 版本?

是的,IronPDF 完全支持 .NET 10 以及 .NET 9、.NET 8、.NET 7、.NET 6、.NET Core 和 .NET Framework,使开发人员能够在现代 .NET 10 应用程序中使用 C# PDFWriter 和相关 API。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。