如何在 C# 中列印前將 PDF 展平
IronPrint 的 PrintSettings 類別包含一個 Flatten 屬性,該屬性會在列印時將所有互動表單欄位、註解和圖像層合併為靜態內容。我們在 PrintSettings 物件上設置 Flatten = true,其他的由 IronPrint 處理 — 不需要單獨的 PDF 操作程式庫或中間文件存檔。
本指南涵蓋何時以及如何在列印前將 PDF 展平,並提供用於同步、合併設置和異步工作的 C# 程式碼。
快速入門:在列印前展平 PDF
- 通過 NuGet 安裝 IronPrint:
Install-Package IronPrint - 將
using IronPrint;新增到文件中 - 建立一個
PrintSettings物件 - 設定
Flatten為true - 將設置傳遞給
Printer.Print()或Printer.PrintAsync()
最小化工作流程(5 步驟)
- 安裝 IronPrint C# 列印程式庫
- 建立一個
PrintSettings物件 - Set
Flattentotrue - 將設置傳遞給
Printer.Print() - 確認列印的輸出包含展平的表單欄位
如何在 C# 中於列印前將 PDF 展平?
我們透過在 PrintSettings 物件上設置 Flatten 屬性為 true 來在列印時展平 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 以避免不必要的處理負擔。
如何將展平與其他列印設置結合?
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 先應用展平操作,然後根據剩餘設置格式化結果靜態文件,然後再將作業發送到列印機。 有關 列印設置選項(包括列印機選擇和托盤配置)的更多資訊,請參閱完整配置指南。
如何進行異步展平和列印?
對於主要執行緒阻塞不可接受的應用程式—例如 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
當列印邏輯位於服務層時,這種基於類別的模式很有用。 我們將 Flatten = true 與 PaperSize.Letter 一同設定,以適用於美國格式的表單。 await 關鍵字在 IronPrint 處理展平操作並發送列印作業時釋放呼叫執行緒。
IronPrint 的異步方法—包括 PrintAsync 和 ShowPrintDialogAsync—都遵循 Flatten 設置,與其同步對應方法 await PrintSettings.Flatten Flatten = true 完全一致。 無論我們是靜默列印還是透過 列印對話框,展平行為始終一致。
我的下一步是什麼?
我們已經涵蓋如何使用 IronPrint 的 PrintSettings 屬性在 C# 中於列印前展平 PDF。 關鍵要點:設置 Flatten 以在列印時合併互動表單欄位、註解和圖片層成靜態內容—不修改源文件。
要繼續構建這樣的內容:
- 探索完整的列印設置配置指南,了解所有可用屬性
- 查看列印設置程式碼範例,了解常見模式
- 查看PrintSettings API 參考,了解屬性詳情和預設值
- 查看IronPrint 更新日志,了解最新功能和改善
開始免費的30天試用,以測試在您自己的列印工作流程中展平PDF,或查看授權選項以供生產使用。
常見問題
列印前壓平 PDFs 的目的是什麼?
壓平 PDF 確保所有表單字段、註釋和圖像合併為單一層,從而保證準確的呈現和列印。
如何使用 C# 壓平 PDF?
您可以通過使用 IronPrint 程式庫來在 C# 中壓平 PDF。這涉及在 PrintSettings 中設置布林值,以確保在列印過程中適當壓平所有元素。
為什麼需要壓平表單字段和註釋?
需要壓平表單字段和註釋以防止列印時修改或錯位,確保一致的輸出。
如果未在列印前壓平 PDF,會發生什麼?
如果未壓平 PDF,可能會導致互動元素(如表單字段和註釋)未正確列印,導致列印文件中的錯誤或資訊缺失。
IronPrint 是否支持平整除表單字段以外其他 PDF 元素?
是的,IronPrint 支持壓平各種 PDF 元素,包括註釋、圖像和其他分層內容,保證一切都按預期列印。
是否可以在 C# 中自動化壓平過程?
當然可以,通過使用 IronPrint,您可以在您的 C# 程式碼中配置 PrintSettings,自動化壓平過程,簡化批量處理 PDF 的工作流程。
壓平 PDF 會影響列印質量嗎?
壓平 PDF 通常可以通過確保所有元素準確呈現和對齊,從而提高列印質量,減少列印過程中的錯誤。
PrintSettings 布林值在 PDF 壓平中扮演什麼角色?
IronPrint 中的 PrintSettings 布林值是一個關鍵參數,使 PDF 壓平,確保所有層合併為單一、可列印的格式。
IronPrint 是否需要額外的軟體來壓平 PDF?
不需要額外的軟體。IronPrint 是一個獨立的程式庫,提供在您的 C# 應用中直接壓平 PDF 所需的所有功能。
IronPrint 如何確保與不同 PDF 版本的相容性?
IronPrint 設計時考慮到了與不同 PDF 版本的相容性,確保壓平過程保持原始文件的完整性和格式。

