C#で印刷前に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. Flattentrue に設定する
  5. 設定を Printer.Print() または 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をどうやってフラット化しますか?

印刷時に、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)
$vbLabelText   $csharpLabel

まず、Flatten = falseを含むデフォルト値で初期化されます。 次に、FlattenPrinter.PrintFlatten に設定します。これにより、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)
$vbLabelText   $csharpLabel

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

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

IronPrintの非同期メソッド(PrintAsyncやShowPrintDialogAsyncなど)はすべて、同期メソッド Flatten await PrintSettings.Flatten Flatten = true と同様に、Flatten 設定を忠実に遵守します。 静かに印刷するか印刷ダイアログで印刷するかに関係なく、平坦化動作は一貫性があります。

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

IronPrintのPrintSettingsプロパティを使用して、C#で印刷前にPDFをフラット化する方法について解説しました。 重要なポイント:Flattenを設定することで、ソースファイルを変更することなく、PRINT時にインタラクティブなフォームフィールド、注釈、画像レイヤーを静的コンテンツに統合できます。

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

無料の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バージョンと互換性があるように設計されており、フラット化プロセスが元のドキュメントの整合性とフォーマットを維持することを保証します。

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

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

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

準備はできましたか?
Nuget ダウンロード 41,154 | バージョン: 2026.5 just released
Still Scrolling Icon

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

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