如何在 C# 中於列印前將 PDF 文件扁平化
IronPrint 的 PrintSettings 類別包含一個 Flatten 屬性,該屬性會在列印時將所有互動式表單欄位、註解及圖像圖層合併為靜態內容。我們在 Flatten = true 物件上設定 PrintSettings,其餘工作便由 IronPrint 處理 — 無需額外的 PDF 處理程式庫或中間檔案儲存步驟。
本指南說明在列印前何時以及如何將 PDF 文件扁平化,並提供適用於同步、組合設定及非同步工作流程的實用 C# 程式碼。
快速入門:列印前將 PDF 文件扁平化
- 透過 NuGet 安裝 IronPrint:
Install-Package IronPrint - 在檔案中加入
using IronPrint; - 建立一個
PrintSettings物件 - 將
Flatten設定為true - 將設定傳遞至
Printer.Print()或Printer.PrintAsync()
簡化工作流程(5 個步驟)
- 安裝 IronPrint C# 列印程式庫
- 建立一個
PrintSettings物件 - 將
Flatten設為true - 將設定傳遞給
Printer.PRINT() - 請確認列印輸出包含已扁平化的表單欄位
如何在 C# 中於列印前將 PDF 文件扁平化?
我們在列印時透過將 Flatten 物件的 true 屬性設定為 PrintSettings,來將 PDF 進行扁平化處理。 接著,我們將該物件傳遞給 IronPrint 的任何列印方法。
:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-flatten-basic.cs
using IronPrint;
// Configure print settings with flattening enabled
PrintSettings settings = new PrintSettings();
settings.Flatten = true;
// Print the flattened document
Printer.Print("application-form.pdf", settings);
Imports IronPrint
' Configure print settings with flattening enabled
Dim settings As New PrintSettings()
settings.Flatten = True
' Print the flattened document
Printer.Print("application-form.pdf", settings)
我們首先實例化 PrintSettings,其初始化時會採用預設值 — 包括 Flatten = false。 接著,我們將 Flatten 設定為 Printer.Print 及 Flatten,這會指示 IronPrint 在傳送列印工作之前,將所有互動元素合併至頁面內容中。 當我們呼叫 [Print()] 時,印表機將接收該文件的完全靜態版本。
扁平化處理發生在列印流程的記憶體中。原始 PDF 檔案在磁碟上仍保持互動性,因此最終使用者仍可填寫並重新提交表單。 這一點至關重要:我們是為了列印而進行扁平化處理,並非永久性地修改原始檔案。
Flatten 屬性於 IronPrint v2024.7.2 版本中引入,並適用於所有後續版本。
何時應在列印前將 PDF 文件"扁平化"?
當 PDF 文件包含可能無法在紙本上正確呈現的互動元素時,平鋪處理便顯得尤為重要。 最常見的應用情境包括:
包含可填寫表單欄位的 PDF 檔案。文字輸入框、核取方塊、單選按鈕及下拉式選單皆由 PDF 檢視器呈現,而非嵌入頁面內容中。 某些印表機驅動程式會完全跳過這些層級,導致列印頁面上的欄位呈現空白。 扁平化會將欄位值強制映射至靜態頁面層。
帶有註解或疊加層的 PDF 檔案。評論、便利貼、印章及標記註解皆位於獨立的圖層上。 透過"扁平化"處理,將其併入可見內容中,使其顯示於列印輸出結果中。
PDF 檔案中包含位於不同圖層的嵌入式圖片。由多個來源彙整而成的文件,其圖片可能位於不同的 Z 圖層上。 將複合圖層扁平化為單一圖層,可避免圖片遺漏或對齊錯誤。
當 PDF 僅包含靜態文字和圖片時(例如由 HTML 生成的報告或掃描文件),扁平化處理將無效。 在這些情況下,我們可以將 Flatten 保留其預設值 false Flatten = true PaperSize.A4 PaperOrientation.Portrait Dpi PaperMargins,以避免不必要的處理開銷。
如何將"Flatten"與其他PRINT設定結合使用?
PrintSettings 類別除了 Flatten 之外,還提供了數個屬性。 我們可以在單一列印工作內,同時設定紙張尺寸、方向、DPI、邊距、複印份數以及扁平化處理。
:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-combined-settings.cs
using IronPrint;
// Configure flatten with full print settings
PrintSettings settings = new PrintSettings
{
Flatten = true,
PaperSize = PaperSize.A4,
PaperOrientation = PaperOrientation.Portrait,
Dpi = 300,
NumberOfCopies = 2,
PaperMargins = new Margins(10, 10, 10, 10),
Grayscale = false
};
// Print the insurance claim form
Printer.Print("insurance-claim.pdf", settings);
Imports IronPrint
' Configure flatten with full print settings
Dim settings As New PrintSettings With {
.Flatten = True,
.PaperSize = PaperSize.A4,
.PaperOrientation = PaperOrientation.Portrait,
.Dpi = 300,
.NumberOfCopies = 2,
.PaperMargins = New Margins(10, 10, 10, 10),
.Grayscale = False
}
' Print the insurance claim form
Printer.Print("insurance-claim.pdf", settings)
為求清晰,我們採用物件初始化語法。 EnsureFlatten 可確保所有表單資料均顯示於列印頁面中。 PaperSize 和 Orientation 符合商業表單的標準格式。 DPI 設定為 300 時,可在原本以螢幕解析度渲染的填充區域中產生清晰的文字。 Margins 可透過 Margins 建構函式接受四個以毫米為單位的數值。
這些特性彼此之間並不衝突。 IronPrint 會先執行"扁平化"操作,接著根據剩餘設定格式化生成的靜態文件,最後將列印工作傳送至印表機。 如需更多列印設定選項(包括印表機選擇與紙匣配置),請參閱完整的設定指南。
如何進行扁平化處理並以非同步方式PRINT?
對於無法阻塞主執行緒的應用程式(例如 WPF 或 WinForms 應用程式),我們會使用 Printer.PrintAsync。 此方法接受相同的 PrintSettings 物件,並傳回一個 Task。
:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-async-flatten.cs
using IronPrint;
using System.Threading.Tasks;
public class FormPrinter
{
public async Task PrintFlattenedFormAsync(string pdfPath)
{
// Configure flatten with Letter paper at 300 DPI
PrintSettings settings = new PrintSettings
{
Flatten = true,
PaperSize = PaperSize.Letter,
Dpi = 300
};
// Print asynchronously
await Printer.PrintAsync(pdfPath, settings);
}
}
Imports IronPrint
Imports System.Threading.Tasks
Public Class FormPrinter
Public Async Function PrintFlattenedFormAsync(pdfPath As String) As Task
' Configure flatten with Letter paper at 300 DPI
Dim settings As New PrintSettings With {
.Flatten = True,
.PaperSize = PaperSize.Letter,
.Dpi = 300
}
' Print asynchronously
Await Printer.PrintAsync(pdfPath, settings)
End Function
End Class
當PRINT邏輯位於服務層時,此基於類別的模式便十分實用。 我們將 Flatten = true 與 PaperSize.Letter 搭配使用,以適用於美國格式的表單。 await 關鍵字會在 IronPrint 處理扁平化操作並傳送列印工作時,釋放呼叫執行緒。
IronPrint 的非同步方法(包括 PrintAsync 和 ShowPrintDialogAsync)在處理 Flatten 設定時,其行為與其同步對應方法 await PrintSettings.Flatten Flatten = true 完全一致。 無論是靜默列印還是透過PRINT對話方塊進行列印,其扁平化行為始終保持一致。
接下來我該怎麼做?
我們已介紹如何在 C# 中使用 IronPrint 的 PrintSettings 屬性,於列印前將 PDF 文件進行扁平化處理。 關鍵要點:設定 Flatten 即可在 PRINT 時將互動式表單欄位、註解及圖層整合至靜態內容中 — 且無需修改原始檔案。
延續此內容:
- 探索完整的PRINT設定配置指南,了解所有可用屬性
- 請參閱PRINT設定的程式碼範例以了解常見模式
- 請參閱 PrintSettings API 參考文件以了解屬性詳細資訊與預設值
- 請查閱 IronPrint 的變更日誌,了解最新功能與改進
立即開始 30 天試用,在您的列印工作流程中測試 PDF 扁平化功能,或查看生產環境使用的授權方案。
常見問題
在列印前將 PDF 文件「扁平化」的目的是什麼?
將 PDF 文件扁平化可確保所有表單欄位、註解及圖片皆整合至單一層級,從而保證渲染與 PRINT 的準確性。
如何使用 C# 將 PDF 文件扁平化?
您可以透過 IronPrint程式庫,在 C# 中將 PDF 文件進行扁平化處理。這涉及在 PrintSettings 上設定一個布林值,以確保所有元素在列印過程中都能正確地被扁平化。
為什麼表單欄位和註解需要被扁平化?
表單欄位與註解需進行扁平化處理,以防止任何互動元素在列印時變得可編輯或對齊錯誤,確保輸出結果的一致性。
若在列印前未將 PDF 扁平化,會發生什麼情況?
若 PDF 未進行扁平化處理,表單欄位和註解等互動元素可能無法正確列印,導致列印文件出現錯誤或資訊遺漏。
IronPrint 是否支援將表單欄位以外的其他 PDF 元素進行扁平化處理?
是的,IronPrint 支援將各種 PDF 元素(包括註解、圖片及其他分層內容)進行扁平化處理,確保所有內容皆能如預期般列印出來。
是否可以在 C# 中自動化扁平化流程?
沒問題,using IronPrint,您可以在 C# 程式碼中設定 PrintSettings 來自動化「扁平化」流程,從而簡化 PDF 批次處理的工作流程。
將 PDF 文件扁平化會影響列印品質嗎?
將 PDF 檔案「扁平化」通常能透過確保所有元素均被精確渲染與對齊,從而提升列印品質,並降低列印過程中發生錯誤的機率。
在 PDF 扁平化過程中,PrintSettings 布林值扮演什麼角色?
IronPrint 中的 PrintSettings 布林值(boolean)是一個關鍵參數,可啟用 PDF 扁平化功能,確保所有圖層合併為單一、可直接列印的格式。
IronPrint 是否需要額外的軟體來將 PDF 檔案轉換為平面檔案?
無需額外軟體。IronPrint 是一個獨立的程式庫,提供所有必要的功能,讓您能直接在 C# 應用程式中將 PDF 文件轉換為純文字格式。
IronPrint 如何確保與不同 PDF 版本的相容性?
IronPrint 設計上兼容各種 PDF 版本,確保扁平化處理過程能維持原始文件的完整性與格式。

