C#でpdf 印刷前にPDFをフラット化する方法
IronPrintのPrintSettingsクラスには、すべてのインタラクティブフォームフィールド、注釈、および画像レイヤーを印刷時に静的コンテンツにマージするPrintSettingsオブジェクトに設定すると、IronPrintが残りを処理します — 別のPDF操作ライブラリや中間ファイルの保存は不要です。
このガイドでは、印刷前にPDFを平坦化するタイミングと方法を、同期設定、結合設定、非同期ワークフロー用のC#コードで説明します。
クイックスタート: 印刷前にPDFをフラット化
- NuGetを通じてIronPrintをインストール:
Install-Package IronPrint - ファイルに
using IronPrint;を追加 PrintSettingsオブジェクトを作成trueに設定- 設定を
Printer.PrintAsync()に渡す
- IronPrint C#印刷ライブラリをインストール
- `PrintSettings`オブジェクトを作成
- `Flatten`を`true`に設定
- 設定を`Printer.Print()`に渡す
- 印刷された出力に平坦化されたフォームフィールドが含まれていることを確認
C#で印刷前にPDFをどうやってフラット化しますか?
印刷時にFlattenプロパティを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;
// Send the flattened document to the default printer
Printer.Print("application-form.pdf", settings);
Imports IronPrint
' Configure print settings with flattening enabled
Dim settings As New PrintSettings()
settings.Flatten = True
' Send the flattened document to the default printer
Printer.Print("application-form.pdf", settings)
最初にFlatten = falseを含むデフォルト値で初期化します。 次にtrueに設定し、すべてのインタラクティブ要素を送信前にページコンテンツにマージするようIronPrintに指示します。 Printer.Printを呼び出すと、プリンタは文書の完全に静的なバージョンを受け取ります。
平坦化は印刷パイプライン中にメモリ内で行われます。元のPDFファイルはディスク上でインタラクティブなままであるため、エンドユーザーはフォームに記入して再提出することができます。 これは重要な区別です: 我々はソースファイルを恒久的に変更するのではなく、プリンター用に平坦化しています。
FlattenプロパティはIronPrint v2024.7.2で導入され、その後のすべてのバージョンで利用可能です。
PDFを印刷する前にいつ平坦化するべきですか?
平坦化は、PDFに紙では正しくレンダリングされない可能性のあるインタラクティブな要素が含まれている場合に最も価値があります。 最も一般的なシナリオは次のとおりです:
記入可能なフォームフィールドを持つPDF: テキスト入力、チェックボックス、ラジオボタン、ドロップダウンメニューは、ページコンテンツに埋め込まれるのではなく、PDFビューアーによってレンダリングされます。 一部のプリンタードライバーはこれらのレイヤーを完全にスキップするため、印刷されたページに空白のフィールドが残ります。 平坦化はフィールド値を静的ページ層に強制します。
注釈やオーバーレイを含むPDF: コメント、付箋、スタンプ、マーキング注釈は別の層に存在します。 平坦化はそれらを目に見えるコンテンツに結合し、印刷された出力に表示されるようにします。
異なるレイヤーに埋め込まれた画像を持つPDF: 複数のソースから組み立てられた文書は異なるz層に画像を持つことがあります。 平坦化はすべてを単一の層に複合化し、画像の欠落やずれを防ぎます。
PDFが静的なテキストと画像のみを含むとき — HTMLから生成されたレポートやスキャンされた文書のように — 平坦化は影響を与えません。 その場合、falseのままにして、余計な処理オーバーヘッドを避けることができます。
他の印刷設定と平坦化をどのように組み合わせますか?
Flattenに加えていくつかのプロパティを公開しています。 用紙サイズ、向き、DPI、余白、およびコピー数をフラット化とともに単一の印刷ジョブ内で設定できます。
:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-combined-settings.cs
using IronPrint;
// Flatten and print with full configuration
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 a filled-out insurance claim form
Printer.Print("insurance-claim.pdf", settings);
Imports IronPrint
' Flatten and print with full configuration
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 a filled-out insurance claim form
Printer.Print("insurance-claim.pdf", settings)
わかりやすくするために、オブジェクト初期化子構文を使用します。 Flatten = trueはすべてのフォームデータが印刷ページに表示されることを保証します。 PaperOrientation.Portraitはビジネスフォームの標準フォーマットに準拠しています。 300のDpiは本来画面解像度でレンダリングされた埋め込みフィールドのテキストをシャープにします。 PaperMarginsはミリメートル単位で4つの値を受け入れます。Marginsコンストラクターを通じて。
これらのプロパティは互いに競合しません。 IronPrintは最初にフラット化操作を適用し、残りの設定に従って得られた静的文書をフォーマットしてから、ジョブをプリンターに送ります。 印刷設定オプション(プリンター選択 や トレー設定を含む)については完全な設定ガイドをご覧ください。
非同期でフラット化して印刷するにはどうすればいいですか?
メインスレッドをブロックすることが許されないアプリケーション — 例えばWPFやWinFormsアプリ — ではPrinter.PrintAsyncを使用します。 このメソッドは同じ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)
{
// Flatten form fields and print asynchronously
PrintSettings settings = new PrintSettings
{
Flatten = true,
PaperSize = PaperSize.Letter,
Dpi = 300
};
// Non-blocking print — UI thread stays responsive
await Printer.PrintAsync(pdfPath, settings);
}
}
Imports IronPrint
Imports System.Threading.Tasks
Public Class FormPrinter
Public Async Function PrintFlattenedFormAsync(pdfPath As String) As Task
' Flatten form fields and print asynchronously
Dim settings As New PrintSettings With {
.Flatten = True,
.PaperSize = PaperSize.Letter,
.Dpi = 300
}
' Non-blocking print — UI thread stays responsive
Await Printer.PrintAsync(pdfPath, settings)
End Function
End Class
このクラスベースのパターンは印刷ロジックがサービス層にあるときに役立ちます。 US形式のフォームに対してPaperSize.Letterとともに設定します。 awaitキーワードは、IronPrintがフラット化操作を処理し印刷ジョブを送信する間、呼び出しスレッドを解放します。
IronPrintの非同期メソッド — PrintAsync および ShowPrintDialogAsyncを含む — はすべてFlatten設定を同期的な対応物と同様に尊重します。 静かに印刷するか印刷ダイアログで印刷するかに関係なく、平坦化動作は一貫性があります。
次のステップは何ですか?
IronPrintのPrintSettings.Flattenプロパティを使用してC#で印刷前にPDFを平坦化する方法を説明しました。 重要なポイント: ソースファイルを変更せずに、印刷時にインタラクティブフォームフィールド、注釈、画像レイヤーを静的コンテンツにマージするためにFlatten = trueを設定します。
これを基にさらに進めるには:
- 利用可能なすべてのプロパティについて印刷設定構成ガイドを参照
- 一般的なパターンについて印刷設定コード例を確認
- プロパティの詳細とデフォルト値についてPrintSettings APIリファレンスを確認
- 最新の機能と改善のためにIronPrintの変更履歴を確認
無料の30日間トライアルを開始して、独自の印刷ワークフローでPDFのフラット化をテストするか、本番使用のためのライセンスオプションを表示してください。

