How to Create a PDF in C
無論是添加頁首和頁尾,還是處理相容性問題,透過程式碼建立 PDF 檔案往往會面臨重大挑戰。 值得慶幸的是,Iron Software 透過將各種 PDF 建立功能整合為直觀且易於理解的方法,簡化了此流程,讓開發人員能立即投入專案開發。
透過 IronPDF,您可以無縫地添加圖形、文字、圖片、頁首和頁尾。 您亦可靈活設定文件的版向、尺寸及元資料,並匯出為 PDF/UA 和 PDF/A 等各種標準格式。 此外,將 IronPDF 整合至現有應用程式中,用於檢視 PDF 或程式化列印文件,操作十分簡便。
在本教學中,我們將深入探討各項功能,並展示 IronPDF 如何提升開發體驗。 它讓您能夠建立易於閱讀且可重複使用的程式碼元件,並可部署於任何受支援的環境與平台上。
讀完本文後,您將能深入了解如何運用 IronPDF 製作符合您需求的風格化且獨特的 PDF 檔案。
若要開始安裝 IronPDF 並按照本文所述的教學範例操作,請參閱這份快速安裝指南,它將協助您順利完成所有設定。
快速入門:使用 IronPDF 建立您的第一個 PDF 檔案
只需幾行程式碼,即可使用 IronPDF 在 C# 中輕鬆建立您的第一個 PDF 檔案。 本快速指南將向您展示如何初始化 PDF 文件、新增內容並儲存,確保初次接觸此函式庫的開發者能順利上手。 只需幾秒鐘即可開始建立 PDF,並輕鬆擴展您的 C# 應用程式功能。
目錄
- 設計完美的 PDF 文件
- 輕鬆實現完整的 PDF 自訂
- 標準遵循
設計您的完美 PDF
建立空白 PDF
using IronPDF 建立空白 PDF 檔案的操作直觀且簡單,僅需幾行程式碼即可完成。 我們首先建立一個新的 PdfDocument 類別,為其設定尺寸,並呼叫 SaveAs 方法來儲存它。 TextHeaderFooter
:path=/static-assets/pdf/content-code-examples/how-to/create-new-pdfs.cs
using IronPdf;
PdfDocument pdf = new PdfDocument(270, 270);
pdf.SaveAs("blankPage.pdf");
Imports IronPdf
Dim pdf As New PdfDocument(270, 270)
pdf.SaveAs("blankPage.pdf")
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
新增頁首與頁尾
using IronPDF 可輕鬆在 PDF 檔案的頂部或底部添加頁首與頁尾。 IronPDF 允許您新增兩種類型的頁首和頁尾。 TextHeaderFooter 非常適合僅需顯示文字的場景,例如透過字串插值展示頁碼,例如:"{page} of {total-pages}" HtmlHeaderFooter。 同時,HtmlHeaderFooter 是一種更進階的變體,可讓開發人員自訂所放置的 HTML 內容。
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
HTML 頁首與頁尾
透過設定 HtmlHeaderFooter 物件 <center>,我們可以自訂文字的顯示位置,方法是將頁碼包覆在 span 標籤中,並加入圖片資源以確保文件具有唯一性。
:path=/static-assets/pdf/content-code-examples/how-to/headers-and-footers-htmlheaderfooter.cs
using IronPdf;
string headerHtml = @"
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a header!</h1>
</body>
</html>";
string footerHtml = @"
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a footer!</h1>
</body>
</html>";
// Instantiate renderer and create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Create header and footer
HtmlHeaderFooter htmlHeader = new HtmlHeaderFooter
{
HtmlFragment = headerHtml,
LoadStylesAndCSSFromMainHtmlDocument = true,
};
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter
{
HtmlFragment = footerHtml,
LoadStylesAndCSSFromMainHtmlDocument = true,
};
// Add to PDF
pdf.AddHtmlHeaders(htmlHeader);
pdf.AddHtmlFooters(htmlFooter);
Imports IronPdf
Private headerHtml As String = "
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a header!</h1>
</body>
</html>"
Private footerHtml As String = "
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a footer!</h1>
</body>
</html>"
' Instantiate renderer and create PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Create header and footer
Private htmlHeader As New HtmlHeaderFooter With {
.HtmlFragment = headerHtml,
.LoadStylesAndCSSFromMainHtmlDocument = True
}
Private htmlFooter As New HtmlHeaderFooter With {
.HtmlFragment = footerHtml,
.LoadStylesAndCSSFromMainHtmlDocument = True
}
' Add to PDF
pdf.AddHtmlHeaders(htmlHeader)
pdf.AddHtmlFooters(htmlFooter)
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
文字頁首與頁尾
以下範例使用 TextHeaderFooter 並搭配佔位符值,以標示頁碼、URL 及日期。
:path=/static-assets/pdf/content-code-examples/how-to/headers-and-footers-add-textheaderfooter.cs
using IronPdf;
// Instantiate renderer and create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter
{
CenterText = "This is the header!",
};
// Create text footer
TextHeaderFooter textFooter = new TextHeaderFooter
{
CenterText = "This is the footer!",
};
// Add text header and footer to the PDF
pdf.AddTextHeaders(textHeader);
pdf.AddTextFooters(textFooter);
pdf.SaveAs("addTextHeaderFooter.pdf");
Imports IronPdf
' Instantiate renderer and create PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Create text header
Dim textHeader As New TextHeaderFooter With {
.CenterText = "This is the header!"
}
' Create text footer
Dim textFooter As New TextHeaderFooter With {
.CenterText = "This is the footer!"
}
' Add text header and footer to the PDF
pdf.AddTextHeaders(textHeader)
pdf.AddTextFooters(textFooter)
pdf.SaveAs("addTextHeaderFooter.pdf")
除了上述欄位外,我們還提供以下佔位符值,這些值將在渲染時被替換:{page}, {total-pages}, {url}, {date}, {pdf-title}。
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
添加頁碼
與上述範例類似,我們可透過在頁首或頁尾放置 TextHeaderFooter 或 HtmlHeaderFooter 佔位符,在文件渲染時顯示頁碼。
:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-basic.cs
using IronPdf;
// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter()
{
CenterText = "{page} of {total-pages}"
};
// Create html footer
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};
// Render a new PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Add header and footer
pdf.AddTextHeaders(textHeader);
pdf.AddHtmlFooters(htmlFooter);
pdf.SaveAs("pdfWithPageNumber.pdf");
Imports IronPdf
' Create text header
Private textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}
' Create html footer
Private htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}
' Render a new PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Add header and footer
pdf.AddTextHeaders(textHeader)
pdf.AddHtmlFooters(htmlFooter)
pdf.SaveAs("pdfWithPageNumber.pdf")
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
使用 DataURIs 嵌入圖片
有時依賴資源目錄會過於緩慢且效率低下;因此,我們可以透過 Data URI 嵌入圖片作為替代方案。 以下是一個簡短的程式碼片段,展示如何實現此功能。
:path=/static-assets/pdf/content-code-examples/how-to/datauris-image.cs
using IronPdf;
using System;
// Read byte from image file
var pngBinaryData = System.IO.File.ReadAllBytes("My_image.png");
// Convert bytes to base64
var ImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData);
// Import base64 to img tag
var ImgHtml = $"<img src='{ImgDataURI}'>";
ChromePdfRenderer Renderer = new ChromePdfRenderer();
// Render the HTML string
var pdf = Renderer.RenderHtmlAsPdf(ImgHtml);
pdf.SaveAs("datauri_example.pdf");
Imports IronPdf
Imports System
' Read byte from image file
Private pngBinaryData = System.IO.File.ReadAllBytes("My_image.png")
' Convert bytes to base64
Private ImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)
' Import base64 to img tag
Private ImgHtml = $"<img src='{ImgDataURI}'>"
Private Renderer As New ChromePdfRenderer()
' Render the HTML string
Private pdf = Renderer.RenderHtmlAsPdf(ImgHtml)
pdf.SaveAs("datauri_example.pdf")
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
OpenAI for PDF
IronPDF 透過支援 OpenAI 模型來提升效率與可擴展性,藉此實現快速摘要、查詢及記憶功能,所有功能皆採用 Microsoft Semantic Kernel 技術。 以下是一個簡短的程式碼片段,展示如何使用 OpenAI 快速摘要 PDF 文件的內容。
:path=/static-assets/pdf/content-code-examples/how-to/openai-summarize.cs
using IronPdf;
using IronPdf.AI;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Memory;
using System;
using System.Threading.Tasks;
// Setup OpenAI
var azureEndpoint = "<<enter your azure endpoint here>>";
var apiKey = "<<enter your azure API key here>>";
var builder = Kernel.CreateBuilder()
.AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)
.AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey);
var kernel = builder.Build();
// Setup Memory
var memory_builder = new MemoryBuilder()
// optionally use new ChromaMemoryStore("http://127.0.0.1:8000") (see https://github.com/microsoft/semantic-kernel/blob/main/dotnet/notebooks/09-memory-with-chroma.ipynb)
.WithMemoryStore(new VolatileMemoryStore())
.WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey);
var memory = memory_builder.Build();
// Initialize IronAI
IronDocumentAI.Initialize(kernel, memory);
License.LicenseKey = "<<enter your IronPdf license key here";
// Import PDF document
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Summarize the document
Console.WriteLine("Please wait while I summarize the document...");
string summary = await pdf.Summarize(); // optionally pass AI instance or use AI instance directly
Console.WriteLine($"Document summary: {summary}\n\n");
Imports Microsoft.VisualBasic
Imports IronPdf
Imports IronPdf.AI
Imports Microsoft.SemanticKernel
Imports Microsoft.SemanticKernel.Connectors.OpenAI
Imports Microsoft.SemanticKernel.Memory
Imports System
Imports System.Threading.Tasks
' Setup OpenAI
Private azureEndpoint = "<<enter your azure endpoint here>>"
Private apiKey = "<<enter your azure API key here>>"
Private builder = Kernel.CreateBuilder().AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey).AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey)
Private kernel = builder.Build()
' Setup Memory
Private memory_builder = (New MemoryBuilder()).WithMemoryStore(New VolatileMemoryStore()).WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)
Private memory = memory_builder.Build()
' Initialize IronAI
IronDocumentAI.Initialize(kernel, memory)
License.LicenseKey = "<<enter your IronPdf license key here"
' Import PDF document
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Summarize the document
Console.WriteLine("Please wait while I summarize the document...")
Dim summary As String = Await pdf.Summarize() ' optionally pass AI instance or use AI instance directly
Console.WriteLine($"Document summary: {summary}" & vbLf & vbLf)
如需更詳細的程式碼片段說明,或想進一步探索其額外功能,請參閱我們的完整操作指南。
完整的 PDF 自訂功能
方向與旋轉
方向
PaperOrientation 類別中的 RenderingOptions 屬性,可讓您指定 PDF 的橫向或縱向顯示方式。 在此範例中,我們將其設定為 PdfPaperOrientation.Landscape,以將 PDF 方向渲染為橫向模式。
:path=/static-assets/pdf/content-code-examples/tutorials/csharp-create-pdf-complete-1.cs
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Change paper orientation
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
pdf.SaveAs("landscape.pdf");
Dim renderer As New ChromePdfRenderer()
' Change paper orientation
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
pdf.SaveAs("landscape.pdf")
旋轉
若要設定 PDF 頁面的旋轉角度,我們可以使用 SetPageRotation 方法,並搭配 PdfPageRotation 枚舉作為輸入參數,來旋轉頁面。
:path=/static-assets/pdf/content-code-examples/how-to/page-orientation-rotation-set-rotation.cs
using IronPdf;
using IronPdf.Rendering;
using System.Collections.Generic;
PdfDocument pdf = PdfDocument.FromFile("landscape.pdf");
// Set all pages
pdf.SetAllPageRotations(PdfPageRotation.Clockwise90);
// Set a single page
pdf.SetPageRotation(1, PdfPageRotation.Clockwise180);
// Set multiple pages
List<int> selectedPages = new List<int>() { 0, 3 };
pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270);
pdf.SaveAs("rotatedLandscape.pdf");
Imports IronPdf
Imports IronPdf.Rendering
Imports System.Collections.Generic
Private pdf As PdfDocument = PdfDocument.FromFile("landscape.pdf")
' Set all pages
pdf.SetAllPageRotations(PdfPageRotation.Clockwise90)
' Set a single page
pdf.SetPageRotation(1, PdfPageRotation.Clockwise180)
' Set multiple pages
Dim selectedPages As New List(Of Integer)() From {0, 3}
pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270)
pdf.SaveAs("rotatedLandscape.pdf")
如需更詳細的說明,了解如何設定 PDF 的方向與旋轉,以及探索其額外功能,請參閱我們的完整操作指南。
自訂紙張尺寸
透過 SetCustomPaperSizeinCentimeters 方法設定 width 和 height,以設定 PDF 的尺寸。 IronPDF 亦支援設定標準化尺寸(例如 A4),方法是將 PaperSize 屬性設定為可用枚舉值的清單。
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
自訂紙張尺寸(單位:公分)
:path=/static-assets/pdf/content-code-examples/how-to/custom-paper-size-cm.cs
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set custom paper size in cm
renderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15);
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>");
pdf.SaveAs("customPaperSize.pdf");
Imports IronPdf
Private renderer As New ChromePdfRenderer()
' Set custom paper size in cm
renderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15)
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>")
pdf.SaveAs("customPaperSize.pdf")
標準紙張尺寸
在此範例中,我們亦將 PaperSize 屬性設定為 PdfPaperSize.A4 的枚舉值。
:path=/static-assets/pdf/content-code-examples/how-to/custom-paper-size-standard-paper-size.cs
using IronPdf;
using IronPdf.Rendering;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set paper size to A4
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>");
pdf.SaveAs("standardPaperSize.pdf");
Imports IronPdf
Imports IronPdf.Rendering
Private renderer As New ChromePdfRenderer()
' Set paper size to A4
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>")
pdf.SaveAs("standardPaperSize.pdf")
如需支援的標準尺寸清單,請點擊此處。
標準遵循
Export PDF/A Format Docs in C
using SaveAsPdfUA 方法建立並匯出符合 PDF/UA 標準的 PDF 檔案。
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromfile.cs
using IronPdf;
// Create a PdfDocument object or open any PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b);
Imports IronPdf
' Create a PdfDocument object or open any PDF File
Private pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整操作指南。
Export PDF/UA Format Docs in C
若要在 C# 中將 PDF 轉換為 PDF/A,我們同樣可以使用 IronPDF 函式庫,它支援最新的 PDF/A 標準,確保檔案的完整性; 與上述範例類似,我們呼叫 SaveAsPdfA 來將 PDF 儲存為符合 PDF/A 標準的檔案。
:path=/static-assets/pdf/content-code-examples/how-to/pdfua-fromfile.cs
using IronPdf;
// Open PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Export as PDF/UA compliance PDF
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf");
Imports IronPdf
' Open PDF File
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Export as PDF/UA compliance PDF
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf")
在此範例中,我們將 PDF 儲存為 PDF/A-3 格式,並使用 PdfAVersions 的枚舉值。
如需查看支援的 PDF/A 版本完整清單,請點擊此處。
結論
上述簡短範例展示了您在使用 IronPDF 建立 PDF 時所能解鎖的強大功能與突出特色。
若您想提出功能需求,或對 IronPDF 及授權有任何一般性疑問,請聯絡我們的支援團隊。 我們非常樂意為您提供協助。
常見問題
如何使用 IronPDF 在 C# 中建立 PDF 文件?
您可以透過 IronPDF 在 C# 中建立 PDF 文件,方法是初始化一個新的 PDF 文件物件,並在儲存檔案前向其中加入文字、圖片和表格等內容。
IronPDF 提供哪些 PDF 編輯功能?
IronPDF 提供 PDF 編輯功能,包括添加浮水印、頁首、頁尾及背景。此外,它亦支援 PDF 的合併、分割與壓縮。
我可以使用 IronPDF 將表單新增至 PDF 文件中嗎?
是的,IronPDF 允許您在 PDF 文件中加入互動式表單。您可以建立文字輸入框、核取方塊和單選按鈕等表單欄位。
是否可以使用 IronPDF 透過密碼對 PDF 進行加密?
當然可以,您可以使用 IronPDF 透過密碼來保護您的 PDF 文件。它允許您設定使用者密碼和擁有者密碼,以控制存取權限。
如何使用 IronPDF 在 PDF 檔案上加上浮水印?
若要使用 IronPDF 添加浮水印,您可以利用 PDF 編輯功能,在 PDF 文件的每一頁上疊加文字或圖片作為浮水印。
IronPDF 能否壓縮 PDF 檔案以減小其大小?
是的,IronPDF 的 CompressAndSaveAs 方法會壓縮內嵌圖片,並可選擇性地移除 PDF 結構樹,在維持品質的同時縮小檔案大小。只需呼叫 CompressAndSaveAs(outputPath, quality, removeStructureTree) 即可一步完成壓縮與節省。
如何使用 IronPDF 在 PDF 中添加頁首和頁尾?
您可以透過 IronPDF 在 PDF 文件中加入頁首和頁尾,方法是指定要包含在每頁頂部或底部的文字或圖片。
IronPDF 是否支援 PDF 頁面的背景自訂功能?
IronPDF 支援背景自訂功能,讓您能將圖片或顏色設定為 PDF 頁面的背景,從而提升文件的設計質感。
我可以使用 IronPDF 將 HTML 轉換為 PDF 嗎?
是的,IronPDF 提供將 HTML 轉換為 PDF 的功能。您可以將包含 CSS 和 JavaScript 在內的複雜 HTML 內容渲染為 PDF 文件。
在 C# 專案中使用 IronPDF 的系統需求為何?
IronPDF 相容於 .NET Framework 和 .NET Core。它需要 Windows、macOS 或 Linux 作業系統,並能透過 Visual Studio 無縫整合至 C# 專案中。
IronPDF 是否完全相容於 .NET 10?
是的 — IronPDF 完全相容於 .NET 10。它可直接與最新執行環境配合使用,並充分利用 .NET 10 的效能提升與語言增強功能。它支援 .NET 10、9、8、7、6、5、.NET Standard 2.0 以上版本,以及 .NET Framework 4.6.2 以上版本,適用於 Windows、macOS、Linux 及容器環境。

