如何使用 C# 建立 PDF(PDF編輯與建立完整教學)
以程式設計方式建立 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 -新增頁首和頁尾 新增頁碼 -使用 DataURI 嵌入影像 -嵌入來自 Azure Blob 儲存體的映像
- OpenAI for PDF -輕鬆實現完全 PDF 自訂 -方向和旋轉 -自訂紙張尺寸 -標準合規性 -使用 C# 匯出 PDF/A 格式文檔 -使用 C# 匯出 PDF/UA 格式文檔
設計您的完美 PDF
建立空白 PDF
使用IronPDF建立空白 PDF 非常直覺簡單,只需要幾行程式碼。 我們首先建立一個新的 PdfDocument 類,為其提供尺寸,然後呼叫 SaveAs 方法儲存它。
: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")
有關此程式碼片段的更詳細解釋以及探索其附加功能,請參閱我們的綜合操作指南。
新增頁首和頁尾
使用IronPDF可以輕鬆地在 PDF 的頂部或底部添加頁首和頁尾。 IronPDF可讓您新增兩種類型的頁首和頁尾。 TextHeaderFooter 非常適合只需要文字的場景,例如以字串插值顯示頁碼,例如,"{page} of {total-pages}"。 同時,HtmlHeaderFooter 是一個更高級的變體,可讓開發人員自訂他們放置的 HTML 內容。
有關此程式碼片段的更詳細解釋以及探索其附加功能,請參閱我們的綜合操作指南。
HTML頁首和頁尾
透過設定 HtmlHeaderFooter 對象,我們可以透過將頁碼包裹在 <center> 標籤中並新增圖像資源來自訂文字的顯示位置,以確保文件的唯一性。
: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}@, @--CODE-213--@@, {date}@, @--CODE-215---COD-215--DE
有關此程式碼片段的更詳細解釋以及探索其附加功能,請參閱我們的綜合操作指南。
新增頁碼
與上面的範例類似,我們可以使用 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")
有關此程式碼片段的更詳細解釋以及探索其附加功能,請參閱我們的綜合操作指南。
使用 DataURI 嵌入影像
有些時候,依賴資源目錄會太慢、效率太低;因此,我們可以用資料 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客製
方向與旋轉
方向
RenderingOptions 類別中的 PaperOrientation 屬性可讓您指定 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 方向和旋轉的更詳細說明以及探索其附加功能,請參閱我們的綜合操作指南。
自訂紙張尺寸
使用方法 @@--CODE-227--@@ 設定 @@--CODE-225--@@ 和 @@--CODE-226--@@,從而設定 PDF 的尺寸。 IronPDF也支援透過將 PaperSize 屬性設定為可用枚舉清單來設定標準尺寸,例如 A4。
有關此程式碼片段的更詳細解釋以及探索其附加功能,請參閱我們的綜合操作指南。
自訂紙張尺寸(公分)
: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
使用 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/A 標準儲存 PDF。
: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或許可有任何疑問,請聯絡我們的支援團隊。 我們非常樂意為您提供協助。
常見問題解答
如何在 C# 中使用 IronPDF 創建 PDF 文件?
您可以在 C# 中使用 IronPDF 透過初始化新的 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 的性能改進和語言增強功能,與最新的運行時開箱即用。它支援 Windows、macOS、Linux 和容器環境中的 .NET版本 10、9、8、7、6、5、.NET Standard 2.0+ 和 .NET Framework 4.6.2+。

