フッターコンテンツにスキップ
IRONPDFの使用

C#で2つのPDFバイト配列をマージする方法

メモリ内のPDFファイルを扱うことは、現代の.NETアプリケーションにおいて一般的な要件です。 ウェブAPIから複数のPDFファイルを受け取ったり、データベースのBLOB列から取得したり、サーバーからアップロードされたファイルを処理したりする際に、ファイルシステムに触れることなく、複数のPDFバイト配列を単一のPDFドキュメントに結合する必要がよくあります。 この記事では、 IronPDF がPDF をプログラム的に結合するための直感的な API を使用して、いかにして PDF の結合を驚くほど簡単にするかを説明します。

! IronPDF を使って C# で 2 つの PDF バイト配列を結合する方法: 画像 1 - IronPDF

なぜPDFファイルのバイト配列を単純に連結できないのか?

テキストファイルとは異なり、PDFドキュメントは交差参照テーブル、オブジェクト定義、特定のフォーマット要件を持つ複雑な内部構造を持っています。 2つのPDFファイルをバイト配列として単純に連結すると、ドキュメント構造が破損し、読み取り不可能なPDFファイルが生成されます。そのため、IronPDFのような専用のPDFライブラリが不可欠です。これらのライブラリはPDF仕様を理解し、整合性を維持しながらPDFファイルを適切に結合します。 Stack Overflowフォーラムのディスカッションによると、バイト配列の直接連結を試みることは、開発者が PDF コンテンツを結合しようとする際によく起こるエラーです。

! IronPDFを使用してC#で2つのPDFバイト配列を結合する方法:画像2 - 機能

PDF を結合するために IronPDF を設定する方法

.NETプロジェクト内でNuGetパッケージマネージャーを通じてIronPDFをインストールします:

Install-Package IronPdf

! IronPDFを使用してC#で2つのPDFバイト配列を結合する方法:画像3 - インストール Pixabayから追加アップロード

またはここに画像をドラッグアンドドロップしてください

ライブラリをインポートするために必要なusingステートメントを追加します:

using IronPdf;
using System.IO;  // For MemoryStream
using System.Threading.Tasks;
using IronPdf;
using System.IO;  // For MemoryStream
using System.Threading.Tasks;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

実稼働サーバー環境では、ライセンス キーを適用して、パスワード制限なしですべての機能にアクセスします。

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

IronPDFはWindows、Linux、macOS、およびDockerコンテナをサポートしており、ASP.NET Coreおよびクラウドネイティブアプリケーションにとって実用的なソリューションです。

! IronPDFを使用してC#で2つのPDFバイト配列を結合する方法:画像4 - クロスプラットフォームの互換性

IronPDF を使用して C# で 2 つの PDF バイト配列を結合する方法

var PDF = PdfDocument.Merge(
    PdfDocument.FromBytes(pdfBytes1),
    PdfDocument.FromBytes(pdfBytes2));
var PDF = PdfDocument.Merge(
    PdfDocument.FromBytes(pdfBytes1),
    PdfDocument.FromBytes(pdfBytes2));
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Here's the core code sample for merging two PDF files from byte array data:

public byte[] MergePdfByteArrays(byte[] firstPdf, byte[] secondPdf)
{
    // Load the first PDF file from byte array
    var pdf1 = new PdfDocument(firstPdf);
    // Load the second PDF file from byte array
    var pdf2 = new PdfDocument(secondPdf);
    // Merge PDF documents into one PDF
    var mergedPdf = PdfDocument.Merge(pdf1, pdf2);
    // Return the combined PDF as byte array
    return mergedPdf.BinaryData;
}
public byte[] MergePdfByteArrays(byte[] firstPdf, byte[] secondPdf)
{
    // Load the first PDF file from byte array
    var pdf1 = new PdfDocument(firstPdf);
    // Load the second PDF file from byte array
    var pdf2 = new PdfDocument(secondPdf);
    // Merge PDF documents into one PDF
    var mergedPdf = PdfDocument.Merge(pdf1, pdf2);
    // Return the combined PDF as byte array
    return mergedPdf.BinaryData;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

This method accepts two PDF byte arrays as input parameters. PdfDocument.FromBytes()メソッドは、各バイト配列を PdfDocument オブジェクトに読み込みます。 C#でPDFバイト配列を結合する方法: 図5 - サンプルPDF入力1

入力

! IronPDF を使って C# で 2 つの PDF バイト配列を結合する方法: 画像 5 - サンプル PDF 入力 1

! IronPDF を使って C# で 2 つの PDF バイト配列を結合する方法: 画像 6 - サンプル PDF 入力 2

出力

! IronPDFを使用してC#で2つのPDFバイト配列を結合する方法: 画像7 - 2つのPDFバイト配列の出力を結合

さらに細かく制御するには、新しい MemoryStream を直接操作することもできます。

public byte[] MergePdfsWithStream(byte[] src1, byte[] src2)
{
    using (var stream = new MemoryStream())
    {
        var pdf1 = new PdfDocument(src1);
        var pdf2 = new PdfDocument(src2);
        var combined = PdfDocument.Merge(pdf1, pdf2);
        return combined.BinaryData;
    }
}
public byte[] MergePdfsWithStream(byte[] src1, byte[] src2)
{
    using (var stream = new MemoryStream())
    {
        var pdf1 = new PdfDocument(src1);
        var pdf2 = new PdfDocument(src2);
        var combined = PdfDocument.Merge(pdf1, pdf2);
        return combined.BinaryData;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

両方のPDFファイルが同じ名前のフォームフィールドを含む場合、IronPDFは自動的にアンダースコアを追加して名前の競合を処理します。 最後に、BinaryDataプロパティは、結合されたPDFを新しいドキュメントとしてバイト配列形式で返します。 結果を他のメソッドに渡すには、このバイト配列を返すだけです。必要がない限り、ディスクに保存する必要はありません。

パフォーマンス向上のために非同期マージを実装するにはどうすればよいでしょうか?

次のコードは、PDFドキュメントを非同期的に結合する方法を示しています。 この非同期実装は、PDFの結合操作をTask.Run()でラップし、バックグラウンドスレッドで実行できるようにします。

public async Task<byte[]> MergePdfByteArraysAsync(byte[] firstPdf, byte[] secondPdf)
{
    return await Task.Run(() =>
    {
        var pdf1 = new PdfDocument(firstPdf);
        var pdf2 = new PdfDocument(secondPdf);
        var PDF = PdfDocument.Merge(pdf1, pdf2);
        return PDF.BinaryData;
    });
}
public async Task<byte[]> MergePdfByteArraysAsync(byte[] firstPdf, byte[] secondPdf)
{
    return await Task.Run(() =>
    {
        var pdf1 = new PdfDocument(firstPdf);
        var pdf2 = new PdfDocument(secondPdf);
        var PDF = PdfDocument.Merge(pdf1, pdf2);
        return PDF.BinaryData;
    });
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このasync実装は、PDFの結合操作をTask.Run()でラップし、バックグラウンドスレッドで実行できるようにしています。 This approach is particularly valuable in ASP.NET web applications where you want to maintain responsive request handling while processing multiple PDF documents. このメソッドはTask<byte[]>を返し、呼び出し元がメインスレッドをブロッキングせずに結果を待機できるようにします。 上記のコードは、大きなPDFファイル操作を扱う際の効率的なメモリ管理を確保します。

出力

! IronPDFを使ってC#で2つのPDFバイト配列を結合する方法: 画像8 - PDF出力の非同期結合

複数の PDF ファイルを効率的に結合する方法

複数の PDF ファイルを操作する場合は、リストを使用してバッチ処理を行います。 基本的に、このソリューションを使用すると、任意の数の PDF ドキュメントを 1 つの PDF に結合することができます。

public byte[] MergeMultiplePdfByteArrays(List<byte[]> pdfByteArrays)
{
    if (pdfByteArrays == null || pdfByteArrays.Count == 0)
        return null;
    // Convert all byte arrays to PdfDocument objects
    var pdfDocuments = pdfByteArrays
        .Select(bytes => new PdfDocument(bytes))
        .ToList();
    // Merge all PDFs in one operation
    var PDF = PdfDocument.Merge(pdfDocuments);
    // Clean up resources
    foreach (var pdfDoc in pdfDocuments)
    {
        pdfDoc.Dispose();
    }
    return PDF.BinaryData;
}
public byte[] MergeMultiplePdfByteArrays(List<byte[]> pdfByteArrays)
{
    if (pdfByteArrays == null || pdfByteArrays.Count == 0)
        return null;
    // Convert all byte arrays to PdfDocument objects
    var pdfDocuments = pdfByteArrays
        .Select(bytes => new PdfDocument(bytes))
        .ToList();
    // Merge all PDFs in one operation
    var PDF = PdfDocument.Merge(pdfDocuments);
    // Clean up resources
    foreach (var pdfDoc in pdfDocuments)
    {
        pdfDoc.Dispose();
    }
    return PDF.BinaryData;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

This method efficiently handles any number of PDF byte arrays. It first validates the input to ensure the list contains data. LINQ のSelect()メソッドを使用して、各バイト配列を PdfDocument オブジェクトに変換します。 Merge()メソッドは PDFDocument オブジェクトのリストを受け入れ、それらをすべて 1 回の操作で結合して新しいドキュメントを作成します。 リソースのクリーンアップは重要です。PDF の結合後に個々の PdfDocument オブジェクトを破棄すると、特に多数の PDF ファイルや大きな PDF ファイルを処理するときに、メモリとリソースを効率的に管理するのに役立ちます。 ## 生産用途におけるベストプラクティスとは?

PDF操作を常にtry-catchブロックでラップし、破損したまたはパスワード保護されたPDFファイルからの潜在的な例外を処理します。

破損した PDF ファイルやパスワードで保護された PDF ファイルからの潜在的な例外を処理するには、常に PDF 操作を try-catch ブロックで囲みます。 メモリ リークを防ぐには、using ステートメントを使用するか、PdfDocument オブジェクトを明示的に破棄します。 複数のPDFドキュメントから選択したページを操作するときは、結合前に特定のPdfPageインスタンスを抽出することもできます。

複数の PDF ドキュメントから選択したページを操作する場合、結合する前に特定の PdfPage ページ インスタンスを抽出することもできます。 IronPDF の包括的なエラー処理により、テスト環境と本番環境の両方で堅牢な本番環境の展開が保証されます。 C#でPDFバイト配列を結合する方法: 図9

! IronPDF を使用して C# で 2 つの PDF バイト配列を結合する方法: 画像 9 - C# で 2 つの PDF バイト配列を結合する方法 - IronPDF

結論

ドキュメント管理システムを構築する、APIレスポンスを処理する、添付ファイル付きのファイルアップロードを処理する、またはデータベースストレージを操作する場合でも、IronPDFのPDF結合機能は.NETアプリケーションにスムーズに統合されます。 ライブラリは非同期操作とメモリ効率の良い処理をサポートしており、デスクトップおよびサーバーアプリケーションの両方にとって実用的なソリューションです。

このライブラリは非同期操作とメモリ効率の良い処理をサポートしており、デスクトップおよびサーバーアプリケーションの両方にとって実用的なソリューションです。 一時ファイルをディスクに書き込むことなくPDFファイルを編集、変換、保存できます。 質問を投稿したり追加の回答を見つけたい場合は、フォーラムまたは Web サイトにアクセスしてください。

アプリケーションでPDFのマージをダウンロードして実装する準備はできましたか? 無料トライアルを開始するか、包括的なAPI ドキュメントを参照して、 HTML から PDF への変換、PDF フォームの処理、デジタル署名など、IronPDF の完全な機能セットをご確認ください。 当サイトでは、すべての System.IO ストリーム操作に関する完全なリファレンス ドキュメントを提供しています。

! IronPDFを使ってC#で2つのPDFバイト配列を結合する方法:画像10 - ライセンス

よくある質問

C#で2つのPDFバイト配列をマージするにはどうすれば良いですか?

IronPDFを使用してC#で2つのPDFバイト配列をマージできます。ディスクに保存する必要なく、複数のPDFファイルをバイト配列として簡単に1つのPDFドキュメントに統合できます。

PDFバイト配列をマージするのにIronPDFを使用するメリットは何ですか?

IronPDFは、直感的なAPIを提供することでPDFバイト配列のマージプロセスを簡素化します。メモリ内でPDFを効率的に処理し、データベースやWebサービスからPDFを取得するアプリケーションに理想的です。

IronPDFはディスクに保存せずにPDFファイルをマージできますか?

はい、IronPDFはディスクに保存せずにPDFファイルをマージできます。バイト配列から直接PDFファイルを処理し、メモリベースの操作に適しています。

IronPDFを使用してWebサービスから受信したPDFファイルをマージすることは可能ですか?

もちろんです。IronPDFは、Webサービスからバイト配列として受け取ったPDFファイルをマージでき、リモートPDFソースとのシームレスな統合を可能にします。

C#でPDFバイト配列をマージする一般的な用途は何ですか?

一般的な用途として、データベースから取得した複数のPDFドキュメントを1つのPDFファイルに結合し、その後C#アプリケーションで処理または表示することがあります。

IronPDFはメモリ内でPDFを処理することをサポートしていますか?

はい、IronPDFはメモリ内でのPDF処理をサポートしており、中間ディスクストレージなしでPDFファイルを迅速に操作する必要があるアプリケーションにとって重要です。

IronPDFはデータベースからのPDFマージをどのように処理しますか?

IronPDFはPDFバイト配列を直接操作できることにより、データベースからのPDFマージを処理します。これにより、一時ファイルの保存が不要となります。

IronPDFは複数のPDFファイルを1つに統合できますか?

はい、IronPDFは複数のPDFファイルをそのバイト配列をマージすることで1つに統合でき、複合PDFドキュメントを作成する簡略化された方法を提供します。

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

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

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