# How to Create a PDF in C#
無論是新增頁首和頁尾,還是處理相容性問題,透過程式碼建立 PDF 檔案往往會面臨重大挑戰。 值得慶幸的是,Iron Software 透過將各種 PDF 建立功能整合為直觀且易於理解的方法,簡化了此流程,讓開發人員能立即投入專案開發。
透過 IronPDF,您可以無縫地新增圖形、文字、圖片、頁首和頁尾。 您亦可靈活設定文件的版向、尺寸及元資料,並匯出為 PDF/UA 和 PDF/A 等各種標準格式。 此外,將 IronPDF 整合至現有應用程式中,用於檢視 PDF 或程式化列印文件,操作十分簡便。
在本教學中,我們將深入探討各項功能,並展示 IronPDF 如何提升開發體驗。 它讓您能夠建立易於閱讀且可重複使用的程式碼元件,並可部署於任何受支援的環境與平台上。
讀完本文後,您將能深入了解如何運用 IronPDF 製作符合您需求的風格化且獨特的 PDF 檔案。
若要開始安裝 IronPDF 並按照本文所述的教學範例操作,請參閱這份[快速安裝指南](https://ironpdf.com/docs/),它將協助您順利完成所有設定。
*as-heading:2(快速入門:使用 IronPDF 建立您的第一個 PDF 檔案)*
只需幾行程式碼,即可使用 IronPDF 在 C# 中輕鬆建立您的第一個 PDF 檔案。 本快速指南將向您展示如何初始化 PDF 文件、新增內容並儲存,確保初次接觸此函式庫的開發者能順利上手。 只需幾秒鐘即可開始建立 PDF,並輕鬆擴展您的 C# 應用程式功能。
```cs
:title=Instant PDF Creation with IronPDF
new IronPdf.PdfDocument(500, 500).SaveAs("output.pdf");
```
*as-heading:2(目錄)*
- **設計完美的 PDF 文件**
- [建立空白 PDF](#anchor-create-blank-pdf)
- [新增頁首與頁尾](#anchor-add-headers-footers)
- [新增頁碼](#anchor-add-page-numbers)
- [使用 DataURIs 嵌入圖片](#anchor-embed-images-with-datauris)
- [從 Azure Blob Storage 嵌入圖片](#anchor-embed-images-with-azure-blob-storage)
- [OpenAI for PDF](#anchor-openai-for-pdf)
- **輕鬆實現完整的 PDF 自訂**
- [方向與旋轉](#anchor-orientation-rotation)
- [自訂紙張尺寸](#anchor-custom-paper-size)
- **標準遵循**
- [使用 C# 匯出 PDF/A 格式文件](#anchor-export-pdf-a-format-docs-in-c-num)
- [使用 C# 匯出 PDF/UA 格式文件](#anchor-export-pdf-ua-format-docs-in-c-num)
## 設計您的完美 PDF
### 建立空白 PDF
using IronPDF 建立空白 PDF 檔案的操作直觀且簡單,僅需幾行程式碼即可完成。 我們首先建立一個新的 `PdfDocument` 類別,為其設定尺寸,並呼叫 `SaveAs` 方法來儲存它。 `TextHeaderFooter`
```cs
using IronPdf;
PdfDocument pdf = new PdfDocument(270, 270);
pdf.SaveAs("blankPage.pdf");
```
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/create-new-pdfs/)。
### 新增頁首與頁尾
using IronPDF 可輕鬆在 PDF 檔案的頂部或底部新增頁首與頁尾。 IronPDF 允許您新增兩種型別的頁首和頁尾。 `TextHeaderFooter` 非常適合僅需顯示文字的場景,例如透過字串插值展示頁碼,例如:`"{page} of {total-pages}"` `HtmlHeaderFooter`。 同時,`HtmlHeaderFooter` 是一種更進階的變體,可讓開發人員自訂所放置的 HTML 內容。
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/headers-and-footers/)。
#### HTML 頁首與頁尾
透過設定 `HtmlHeaderFooter` 物件 `<center>`,我們可以自訂文字的顯示位置,方法是將頁碼包覆在 `span` 標籤中,並加入圖片資源以確保文件具有唯一性。
```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);
```
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/headers-and-footers/#add-html-header-footer-example)。
#### 文字頁首與頁尾
以下範例使用 `TextHeaderFooter` 並搭配佔位符值,以標示頁碼、URL 及日期。
```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");
```
除了上述欄位外,我們還提供以下佔位符值,這些值將在渲染時被替換:`{page}`, `{total-pages}`, `{url}`, `{date}`, `{pdf-title}`。
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/headers-and-footers/#add-a-text-header-footer-example)。
### 新增頁碼
與上述範例類似,我們可透過在頁首或頁尾放置 `TextHeaderFooter` 或 `HtmlHeaderFooter` 佔位符,在文件渲染時顯示頁碼。
```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");
```
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/page-numbers/)。
### 使用 DataURIs 嵌入圖片
有時依賴資源目錄會過於緩慢且效率低下;因此,我們可以透過 Data URI 嵌入圖片作為替代方案。 以下是一個簡短的程式碼片段,展示如何實現此功能。
```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");
```
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/datauris/)。
### OpenAI for PDF
IronPDF 透過支援 OpenAI 模型來提升效率與可擴展性,藉此實現快速摘要、查詢及記憶功能,所有功能皆採用 Microsoft Semantic Kernel 技術。 以下是一個簡短的程式碼片段,展示如何使用 OpenAI 快速摘要 PDF 文件的內容。
```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");
```
如需更詳細的程式碼片段說明,或想進一步探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/openai/)。
## 完整的 PDF 自訂功能
### 方向與旋轉
#### 方向
`PaperOrientation` 類別中的 `RenderingOptions` 屬性,可讓您指定 PDF 的橫向或縱向顯示方式。 在此範例中,我們將其設定為 `PdfPaperOrientation.Landscape`,以將 PDF 方向渲染為橫向模式。
```csharp
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");
```
#### 旋轉
若要設定 PDF 頁面的旋轉角度,我們可以使用 `SetPageRotation` 方法,並搭配 `PdfPageRotation` 枚舉作為輸入參數,來旋轉頁面。
```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");
```
如需更詳細的說明,了解如何設定 PDF 的方向與旋轉,以及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/page-orientation-rotation/)。
### 自訂紙張尺寸
透過 `SetCustomPaperSizeinCentimeters` 方法設定 `width` 和 `height`,以設定 PDF 的尺寸。 IronPDF 亦支援設定標準化尺寸(例如 A4),方法是將 `PaperSize` 屬性設定為可用枚舉值的清單。
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/custom-paper-size/)。
#### 自訂紙張尺寸(單位:公分)
```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");
```
#### 標準紙張尺寸
在此範例中,我們亦將 `PaperSize` 屬性設定為 `PdfPaperSize.A4` 的枚舉值。
```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");
```
如需支援的標準尺寸清單,請點擊[此處](https://ironpdf.com/object-reference/api/IronPdf.Rendering.PdfPaperSize.html)。
## 標準遵循
### Export PDF/A Format Docs in C#
using `SaveAsPdfUA` 方法建立並匯出符合 PDF/UA 標準的 PDF 檔案。
```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);
```
如需更詳細的程式碼片段說明及探索其額外功能,請參閱我們的完整[操作指南](https://ironpdf.com/how-to/pdfua/)。
### Export PDF/UA Format Docs in C#
若要在 C# 中將 PDF 轉換為 PDF/A,我們同樣可以使用 IronPDF 函式庫,它支援最新的 PDF/A 標準,確保檔案的完整性; 與上述範例類似,我們呼叫 `SaveAsPdfA` 來將 PDF 儲存為符合 PDF/A 標準的檔案。
```cs
using IronPdf;
// Open PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Export as PDF/UA. Pass the document's natural language so assistive
// technologies announce the correct pronunciation.
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
```
在此範例中,我們將 PDF 儲存為 PDF/A-3 格式,並使用 `PdfAVersions` 的枚舉值。
如需查看支援的 PDF/A 版本完整清單,請點擊[此處](https://ironpdf.com/object-reference/api/IronPdf.PdfAVersions.html)。
## 結論
上述簡短範例展示了您在使用 IronPDF 建立 PDF 時所能解鎖的強大功能與突出特色。
若您想提出功能需求,或對 IronPDF 及授權有任何一般性疑問,請[聯絡我們的支援團隊](/troubleshooting/engineering-request-pdf/)。 我們非常樂意為您提供協助。
using IronPDF 可輕鬆在 PDF 檔案的頂部或底部新增頁首與頁尾。 IronPDF 允許您新增兩種型別的頁首和頁尾。 TextHeaderFooter 非常適合僅需顯示文字的場景,例如透過字串插值展示頁碼,例如:"{page} of {total-pages}"HtmlHeaderFooter。 同時,HtmlHeaderFooter 是一種更進階的變體,可讓開發人員自訂所放置的 HTML 內容。
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 PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Create header and footerHtmlHeaderFooter htmlHeader = new HtmlHeaderFooter{HtmlFragment = headerHtml,LoadStylesAndCSSFromMainHtmlDocument = true,};HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter{HtmlFragment = footerHtml,LoadStylesAndCSSFromMainHtmlDocument = true,};// Add to PDFpdf.AddHtmlHeaders(htmlHeader);pdf.AddHtmlFooters(htmlFooter);
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);
ImportsIronPdfPrivate headerHtml AsString = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a header!</h1> </body> </html>"Private footerHtml AsString = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a footer!</h1> </body> </html>"' Instantiate renderer and create PDFPrivate renderer As New ChromePdfRenderer()Private pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Create header and footerPrivate htmlHeader As New HtmlHeaderFooterWith { .HtmlFragment = headerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True}Private htmlFooter As New HtmlHeaderFooterWith { .HtmlFragment = footerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True}' Add to PDFpdf.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)
using IronPdf;// Instantiate renderer and create PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Create text headerTextHeaderFooter textHeader = new TextHeaderFooter{CenterText = "This is the header!",};// Create text footerTextHeaderFooter textFooter = new TextHeaderFooter{CenterText = "This is the footer!",};// Add text header and footer to the PDFpdf.AddTextHeaders(textHeader);pdf.AddTextFooters(textFooter);pdf.SaveAs("addTextHeaderFooter.pdf");
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");
ImportsIronPdf' Instantiate renderer and create PDFDim renderer As New ChromePdfRenderer()Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Create text headerDim textHeader As New TextHeaderFooterWith { .CenterText = "This is the header!"}' Create text footerDim textFooter As New TextHeaderFooterWith { .CenterText = "This is the footer!"}' Add text header and footer to the PDFpdf.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")
using IronPdf;// Create text headerTextHeaderFooter textHeader = new TextHeaderFooter(){CenterText = "{page} of {total-pages}"};// Create html footerHtmlHeaderFooter htmlFooter = new HtmlHeaderFooter(){HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"};// Render a new PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Add header and footerpdf.AddTextHeaders(textHeader);pdf.AddHtmlFooters(htmlFooter);pdf.SaveAs("pdfWithPageNumber.pdf");
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");
ImportsIronPdf' Create text headerPrivate textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}' Create html footerPrivate htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}' Render a new PDFPrivate renderer As New ChromePdfRenderer()Private pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Add header and footerpdf.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")
有時依賴資源目錄會過於緩慢且效率低下;因此,我們可以透過 Data URI 嵌入圖片作為替代方案。 以下是一個簡短的程式碼片段,展示如何實現此功能。
using IronPdf;using System;// Read byte from image filevar pngBinaryData = System.IO.File.ReadAllBytes("My_image.png");// Convert bytes to base64varImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData);// Import base64 to img tagvarImgHtml = $"<img src='{ImgDataURI}'>";ChromePdfRendererRenderer = new ChromePdfRenderer();// Render the HTML stringvar pdf = Renderer.RenderHtmlAsPdf(ImgHtml);pdf.SaveAs("datauri_example.pdf");
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");
ImportsIronPdfImportsSystem' Read byte from image filePrivate pngBinaryData = System.IO.File.ReadAllBytes("My_image.png")' Convert bytes to base64PrivateImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)' Import base64 to img tagPrivateImgHtml = $"<img src='{ImgDataURI}'>"PrivateRendererAs New ChromePdfRenderer()' Render the HTML stringPrivate 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")
IronPDF 透過支援 OpenAI 模型來提升效率與可擴展性,藉此實現快速摘要、查詢及記憶功能,所有功能皆採用 Microsoft Semantic Kernel 技術。 以下是一個簡短的程式碼片段,展示如何使用 OpenAI 快速摘要 PDF 文件的內容。
using IronPdf;using IronPdf.AI;using Microsoft.SemanticKernel;using Microsoft.SemanticKernel.Connectors.OpenAI;using Microsoft.SemanticKernel.Memory;using System;using System.Threading.Tasks;// Setup OpenAIvar 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 Memoryvar 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 IronAIIronDocumentAI.Initialize(kernel, memory);License.LicenseKey = "<<enter your IronPdf license key here";// Import PDF documentPdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Summarize the documentConsole.WriteLine("Please wait while I summarize the document...");string summary = await pdf.Summarize(); // optionally pass AI instance or use AI instance directlyConsole.WriteLine($"Document summary: {summary}\n\n");
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");
ImportsMicrosoft.VisualBasicImportsIronPdfImportsIronPdf.AIImportsMicrosoft.SemanticKernelImportsMicrosoft.SemanticKernel.Connectors.OpenAIImportsMicrosoft.SemanticKernel.MemoryImportsSystemImportsSystem.Threading.Tasks' Setup OpenAIPrivate 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 MemoryPrivate memory_builder = (New MemoryBuilder()).WithMemoryStore(New VolatileMemoryStore()).WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)Private memory = memory_builder.Build()' Initialize IronAIIronDocumentAI.Initialize(kernel, memory)License.LicenseKey = "<<enter your IronPdf license key here"' Import PDF documentDim pdf AsPdfDocument = PdfDocument.FromFile("wikipedia.pdf")' Summarize the documentConsole.WriteLine("Please wait while I summarize the document...")Dim summary AsString = Await pdf.Summarize() ' optionally pass AI instance or use AI instance directlyConsole.WriteLine($"Document summary: {summary}" & vbLf & vbLf)
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)
PaperOrientation 類別中的 RenderingOptions 屬性,可讓您指定 PDF 的橫向或縱向顯示方式。 在此範例中,我們將其設定為 PdfPaperOrientation.Landscape,以將 PDF 方向渲染為橫向模式。
ChromePdfRenderer renderer = new ChromePdfRenderer();// Change paper orientationrenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");pdf.SaveAs("landscape.pdf");
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 orientationrenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.LandscapeDim pdf AsPdfDocument = 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 枚舉作為輸入參數,來旋轉頁面。
using IronPdf;using IronPdf.Rendering;using System.Collections.Generic;PdfDocument pdf = PdfDocument.FromFile("landscape.pdf");// Set all pagespdf.SetAllPageRotations(PdfPageRotation.Clockwise90);// Set a single pagepdf.SetPageRotation(1, PdfPageRotation.Clockwise180);// Set multiple pagesList<int> selectedPages = new List<int>() { 0, 3 };pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270);pdf.SaveAs("rotatedLandscape.pdf");
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");
ImportsIronPdfImportsIronPdf.RenderingImportsSystem.Collections.GenericPrivate pdf AsPdfDocument = PdfDocument.FromFile("landscape.pdf")' Set all pagespdf.SetAllPageRotations(PdfPageRotation.Clockwise90)' Set a single pagepdf.SetPageRotation(1, PdfPageRotation.Clockwise180)' Set multiple pagesDim selectedPages As New List(OfInteger)() From {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 的方向與旋轉,以及探索其額外功能,請參閱我們的完整操作指南。
using IronPdf;ChromePdfRenderer renderer = new ChromePdfRenderer();// Set custom paper size in cmrenderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15);PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>");pdf.SaveAs("customPaperSize.pdf");
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");
ImportsIronPdfPrivate renderer As New ChromePdfRenderer()' Set custom paper size in cmrenderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15)Dim pdf AsPdfDocument = 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 的枚舉值。
using IronPdf;using IronPdf.Rendering;ChromePdfRenderer renderer = new ChromePdfRenderer();// Set paper size to A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>");pdf.SaveAs("standardPaperSize.pdf");
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");
ImportsIronPdfImportsIronPdf.RenderingPrivate renderer As New ChromePdfRenderer()' Set paper size to A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4Dim pdf AsPdfDocument = 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")
using IronPdf;// Create a PdfDocument object or open any PDF FilePdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Use the SaveAsPdfA method to save to filepdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b);
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);
ImportsIronPdf' Create a PdfDocument object or open any PDF FileDim pdf AsPdfDocument = PdfDocument.FromFile("wikipedia.pdf")' Use the SaveAsPdfA method to save to filepdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
Imports IronPdf
' Create a PdfDocument object or open any PDF File
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
若要在 C# 中將 PDF 轉換為 PDF/A,我們同樣可以使用 IronPDF 函式庫,它支援最新的 PDF/A 標準,確保檔案的完整性; 與上述範例類似,我們呼叫 SaveAsPdfA 來將 PDF 儲存為符合 PDF/A 標準的檔案。
using IronPdf;// Open PDF FilePdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Export as PDF/UA. Pass the document's natural language so assistive// technologies announce the correct pronunciation.pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
using IronPdf;
// Open PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Export as PDF/UA. Pass the document's natural language so assistive
// technologies announce the correct pronunciation.
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
ImportsIronPdf' Open PDF FileDim pdf AsPdfDocument = PdfDocument.FromFile("wikipedia.pdf")' Export as PDF/UA. Pass the document's natural language so assistive' technologies announce the correct pronunciation.pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage:=NaturalLanguages.English)
Imports IronPdf
' Open PDF File
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Export as PDF/UA. Pass the document's natural language so assistive
' technologies announce the correct pronunciation.
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage:=NaturalLanguages.English)
在此範例中,我們將 PDF 儲存為 PDF/A-3 格式,並使用 PdfAVersions 的枚舉值。