C#で印刷前にPDFをフラット化する方法
IronPrintのPrintSettingsクラスには、印刷時にすべてのインタラクティブなフォームフィールド、注釈、および画像レイヤーを静的コンテンツに統合する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をどうやってフラット化しますか?
印刷時に、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)
まず、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 コンストラクタを通じて、ミリメートル単位の 4 つの値を受け取ります。
これらのプロパティは互いに競合しません。 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
このクラスベースのパターンは印刷ロジックがサービス層にあるときに役立ちます。 米国形式のフォームでは、PaperSize.Letterを組み合わせて設定します。 await キーワードは、IronPrint がフラット化処理を実行し、印刷ジョブを送信している間、呼び出しスレッドを解放します。
IronPrintの非同期メソッド(PrintAsyncやShowPrintDialogAsyncなど)はすべて、同期メソッド Flatten await PrintSettings.Flatten Flatten = true と同様に、Flatten 設定を忠実に遵守します。 静かに印刷するか印刷ダイアログで印刷するかに関係なく、平坦化動作は一貫性があります。
次のステップは何ですか?
IronPrintのPrintSettingsプロパティを使用して、C#で印刷前にPDFをフラット化する方法について解説しました。 重要なポイント:Flattenを設定することで、ソースファイルを変更することなく、PRINT時にインタラクティブなフォームフィールド、注釈、画像レイヤーを静的コンテンツに統合できます。
これを基にさらに進めるには:
- 利用可能なすべてのプロパティについて印刷設定構成ガイドを参照
- 一般的なパターンについて印刷設定コード例を確認
- プロパティの詳細とデフォルト値についてPrintSettings APIリファレンスを確認
- 最新の機能と改善のためにIronPrintの変更履歴を確認
無料の30日間トライアルを開始して、独自の印刷ワークフローでPDFのフラット化をテストするか、本番使用のためのライセンスオプションを表示してください。
よくある質問
印刷前にPDFをフラット化する目的は何ですか?
PDFをフラット化することは、すべてのフォームフィールド、注釈、画像が単一のレイヤーに統合され、正確なレンダリングと印刷を保証します。
C#でPDFをフラット化するにはどうすればよいですか?
IronPrintライブラリを使用して、C#でPDFをフラット化することができます。PrintSettingsでブール値を設定し、印刷プロセス中にすべての要素が適切にフラット化されるようにします。
なぜフォームフィールドと注釈をフラット化する必要がありますか?
フォームフィールドと注釈は、印刷時に編集可能またはずれたりしないようにするためにフラット化する必要があります。これにより、一貫した出力が保証されます。
PDFが印刷前にフラット化されていないとどうなりますか?
PDFがフラット化されていない場合、フォームフィールドや注釈などのインタラクティブ要素が正しく印刷されない可能性があり、印刷された文書でのエラーや情報の欠落を招くことがあります。
IronPrintはフォームフィールド以外のPDF要素のフラット化をサポートしていますか?
はい、IronPrintは注釈、画像、その他のレイヤー化されたコンテンツを含むさまざまなPDF要素のフラット化をサポートしており、すべてが意図通りに印刷されるようにします。
C#でフラット化のプロセスを自動化することは可能ですか?
もちろんです。IronPrintを使用すると、C#のコードでPrintSettingsを設定することで、PDFのバッチ処理ワークフローを簡素化しながらフラット化のプロセスを自動化できます。
PDFをフラット化することで印刷品質に影響しますか?
PDFをフラット化することで、すべての要素が正確にレンダリングされ整列されることで印刷品質が向上し、印刷プロセス中のエラーの可能性が減少します。
PDFフラット化におけるPrintSettingsのブール値の役割は何ですか?
IronPrintのPrintSettingsのブール値は、PDFのフラット化を可能にする重要なパラメータで、すべてのレイヤーが単一の印刷準備完了フォーマットに統合されることを保証します。
IronPrintはPDFをフラット化するために追加のソフトウェアが必要ですか?
追加のソフトウェアは不要です。IronPrintはスタンドアロンのライブラリで、C#アプリケーション内で直接PDFをフラット化するために必要なすべての機能を提供します。
IronPrintは異なるPDFバージョンとの互換性をどのように保証していますか?
IronPrintはさまざまなPDFバージョンと互換性があるように設計されており、フラット化プロセスが元のドキュメントの整合性とフォーマットを維持することを保証します。

