ホームページ >バックエンド開発 >C++ >ランタイムで生成された PDF ファイルを iTextSharp で印刷用に結合するにはどうすればよいですか?

ランタイムで生成された PDF ファイルを iTextSharp で印刷用に結合するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 20:26:10646ブラウズ

How to Merge Runtime-Generated PDF Files in iTextSharp for Printing?

実行時に生成された複数の PDF ファイルを結合する

質問:

複数の PDF ファイルを結合するにはどうすればよいですか印刷用に iTextSharp を使用して実行時に生成された PDF ファイル目的は?

答え:

iText(Sharp) でソース ドキュメントをマージする場合、次の 2 つの異なる状況が発生します:

  1. 保存元のレイアウト:
    ドキュメントを変更されていないページと結合するには、注釈とコンテンツには、Pdf*Copy* クラス ファミリに基づくソリューションが採用されています。これにより、元のドキュメントのインタラクティブ機能の整合性が保証されます。
  2. 新しいドキュメントの作成:
    全体の形式を制御し、インタラクティブ機能を破棄しながらページを統合するには、PdfWriter クラスの使用を検討してください。 。ソース ドキュメントからページをインポートし、そのプレゼンテーションを制御できます。

PdfCopy を使用した実装:

byte[] mergedPdf = null;
using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfCopy copy = new PdfCopy(document, ms))
        {
            document.Open();
            // Iterate over the PDF byte arrays and add pages to the merged document
            for (int i = 0; i < pdf.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdf[i]);
                // Extract pages from the reader and add them to the merged document
                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

提供されたコードでは、pdf は次の配列です。バイト配列。それぞれが生成された PDF ドキュメントを表します。結果のmergedPdfバイト配列には、印刷用に準備された結合されたPDFコンテンツが含まれます。

クラス概要:

  • PdfCopy: 冗長性を持たずにページをコピーします。検出できますが、問題が発生する可能性がありますForms.
  • PdfCopyFields: フィールドとフォームをマージしますが、過剰なメモリを消費する可能性があります。
  • PdfSmartCopy: 冗長性を効率的に検出しますが、より多くのメモリが必要ですresource.
  • PdfWriter: ページをインポートしますが、インポートされたページのインタラクティブな機能は犠牲になります。

以上がランタイムで生成された PDF ファイルを iTextSharp で印刷用に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。