C#でpdf 印刷前にPDFをフラット化する方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPrintのPrintSettingsクラスには、すべてのインタラクティブフォームフィールド、注釈、および画像レイヤーを印刷時に静的コンテンツにマージするPrintSettingsオブジェクトに設定すると、IronPrintが残りを処理します — 別のPDF操作ライブラリや中間ファイルの保存は不要です。

このガイドでは、印刷前にPDFを平坦化するタイミングと方法を、同期設定、結合設定、非同期ワークフロー用のC#コードで説明します。

クイックスタート: 印刷前にPDFをフラット化

  1. NuGetを通じてIronPrintをインストール: Install-Package IronPrint
  2. ファイルにusing IronPrint;を追加
  3. PrintSettingsオブジェクトを作成
  4. trueに設定
  5. 設定をPrinter.PrintAsync()に渡す
  1. IronPrint をNuGetパッケージマネージャでインストール

    PM > Install-Package IronPrint
  2. このコード スニペットをコピーして実行します。

    using IronPrint;
    
    // Flatten and print a PDF with form fields
    Printer.Print("form-document.pdf", new PrintSettings
    {
        Flatten = true
    });
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPrint を使い始めましょう無料トライアル

    arrow pointer

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)
$vbLabelText   $csharpLabel

最初に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)
$vbLabelText   $csharpLabel

わかりやすくするために、オブジェクト初期化子構文を使用します。 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
$vbLabelText   $csharpLabel

このクラスベースのパターンは印刷ロジックがサービス層にあるときに役立ちます。 US形式のフォームに対してPaperSize.Letterとともに設定します。 awaitキーワードは、IronPrintがフラット化操作を処理し印刷ジョブを送信する間、呼び出しスレッドを解放します。

IronPrintの非同期メソッド — PrintAsync および ShowPrintDialogAsyncを含む — はすべてFlatten設定を同期的な対応物と同様に尊重します。 静かに印刷するか印刷ダイアログで印刷するかに関係なく、平坦化動作は一貫性があります。

次のステップは何ですか?

IronPrintのPrintSettings.Flattenプロパティを使用してC#で印刷前にPDFを平坦化する方法を説明しました。 重要なポイント: ソースファイルを変更せずに、印刷時にインタラクティブフォームフィールド、注釈、画像レイヤーを静的コンテンツにマージするためにFlatten = trueを設定します。

これを基にさらに進めるには:

無料の30日間トライアルを開始して、独自の印刷ワークフローでPDFのフラット化をテストするか、本番使用のためのライセンスオプションを表示してください。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 38,930 | バージョン: 2026.4 リリース
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPrint
サンプルを実行する プリンターに出力されるドキュメントを見る。