製品比較

C#でPDFを分割する際のiTextSharpとIronPDFの比較

チペゴ
チペゴ・カリンダ
2024年3月6日
共有:

PDF(ポータブルドキュメントフォーマット)ファイルは、ドキュメントを共有および提示するために広く使用されており、PDFを複数のファイルに分割する必要があるときもあります。 特定のページを抽出したり、大きなドキュメントを小さなセクションに分割したり、各章ごとに個別のファイルを作成したりする場合、PDFを分割することは様々なシナリオで貴重な作業となります。

この記事では、C# を使用して PDF を分割する方法について学びます。 C#は多用途で強力な言語であり、PDFを操作するためのライブラリがいくつか利用可能で、比較的簡単に操作することができます。 C#でPDFを分割するための以下の2つのライブラリについて探ります。

  1. iTextSharp

  2. IronPDF

ITextSharpを使用してC#でPDFを分割する方法

  1. iText7ライブラリを最初にインストールしてください。

  2. 入力されたPDFファイルからPdfReaderを作成します。

  3. PdfDocumentを使用してPDFコンテンツを操作します。

  4. それぞれの分割ファイルのページ数を計算します。

  5. 初期ページ範囲の値を設定します。

  6. ループを使用して、それぞれの分割ファイルを処理します。

  7. 現在の分割ファイルのために新しいPdfDocumentを作成します。

  8. 元のドキュメントから新しいドキュメントにページをコピーします。

  9. 次のイテレーションのためにページ範囲の値を更新します。

  10. 完了した出力PDFを保存します。

  11. 全てのファイルが作成されるまで繰り返します。

  12. 指定された数の分割ファイルの処理を続けます。

IronPDF

C#におけるPDF分割の比較:iTextSharpとIronPDFの違い 図1 - IronPDFウェブページ

IronPDFは、PDFファイルを扱うために設計された強力なC#ライブラリです。 PDFドキュメントからコンテンツを作成変更、および抽出するための機能を提供します。 開発者はゼロからPDFを生成し、既存のPDFを編集し、結合または分割できます。 さらに、IronPDFはHTMLコンテンツをPDF形式に変換することに優れており、レポートやドキュメントの生成に役立ちます。 デジタル署名、セキュリティ機能、高品質な出力のサポートを備えたIronPDFは、.NETアプリケーションにおけるPDF関連のタスクを簡素化します。

iTextSharp

C#でのPDF分割におけるiTextSharpとIronPDFの比較: 図2 - iTextSharpウェブページ

iTextSharp (iText 7) は、.NET フレームワークで PDF ファイルを扱うために広く使用されているライブラリです。 それは、プログラム的にPDFドキュメントからコンテンツを作成、変更、抽出するための強力な機能を提供します。 開発者はiTextSharpを使用してPDFにテキスト、画像、表、およびその他のグラフィカル要素を追加することができます。 また、ドキュメントの組み立て、電子署名、アーカイブおよびアクセシビリティ基準への準拠もサポートしています。 もともとJavaライブラリであったiTextSharpは、.NETに移植され、開発者およびユーザーの活発なコミュニティがあります。

IronPDFライブラリのインストール

Visual Studio のパッケージ マネージャー コンソールを使用してIronPDF NuGet パッケージをインストールするには、次の手順に従います。

  1. Visual Studioで、「ツール」 -> 「NuGetパッケージマネージャー」 -> 「パッケージマネージャーコンソール」に進みます。

  2. 以下のコマンドを使用してIronPDF NuGetパッケージをインストールします:
    :ProductInstall

これにより、IronPDFパッケージとその依存関係がプロジェクトにダウンロードおよびインストールされます。 インストールが完了したら、C#プロジェクトでPDF関連のタスクにIronPDFを使用し始めることができます。

別の方法として、Visual Studio の NuGet パッケージ マネージャーを使用して IronPDF をインストールするか、パッケージをプロジェクト ファイルに直接追加することができます。もう一つのオプションは、公式ウェブサイト からパッケージをダウンロードしてプロジェクトに手動で追加することです。 各メソッドは、PDF関連の機能をC#プロジェクトに統合するための簡単な方法を提供します。

iTextSharpライブラリのインストール

Visual Studioのパッケージ マネージャー コンソールを使用してiTextSharpをインストールするには、次の手順に従います。

  1. Visual Studioで、「ツール」 -> 「NuGetパッケージマネージャー」 -> 「パッケージマネージャーコンソール」に進みます。

  2. 以下のコマンドを使用してiTextSharp NuGetパッケージをインストールしてください:
    Install-Package itext7

これにより、iTextSharpパッケージとその依存関係がプロジェクトにダウンロードおよびインストールされます。 インストールが完了したら、C#プロジェクトでiTextSharpを使用してPDFを操作し始めることができます。

IronPDFを使用してC#でPDFドキュメントを分割する

IronPDFを使用してPDFファイルを複数のPDFファイルに分割することができます。 シンプルな方法でこれを実現します。 以下のコードは、ソースPDFファイルを入力として受け取り、複数のPDFファイルに分割します。

static void Main(string [] args)
 {
    string file = "input.pdf"'
    // Call the SplitPdf method to split the PDF
    SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
 } 
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
     int firstPage = 1;
     int lastPage = 2;
     int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
     for (int i = 1; i <= NumberOfSplitFiles; i++)
     {
        // Copy multiple pages into a new document
        PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
        string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
        newSplitPDF.SaveAs(name);
        firstPage = lastPage + 1;
        lastPage += totalPageInOneFile;
     }
 }
static void Main(string [] args)
 {
    string file = "input.pdf"'
    // Call the SplitPdf method to split the PDF
    SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
 } 
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
     int firstPage = 1;
     int lastPage = 2;
     int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
     for (int i = 1; i <= NumberOfSplitFiles; i++)
     {
        // Copy multiple pages into a new document
        PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
        string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
        newSplitPDF.SaveAs(name);
        firstPage = lastPage + 1;
        lastPage += totalPageInOneFile;
     }
 }
Shared Sub Main(ByVal args() As String)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	string file = "input.pdf"' SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles); } static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles) { PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath); int firstPage = 1; int lastPage = 2; int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles; for(int i = 1; i <= NumberOfSplitFiles; i++) { PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage); string name = string.Format("{0}\SplitPDF_IronPDF_{1}.pdf", outputFolder, i); newSplitPDF.SaveAs(name); firstPage = lastPage + 1; lastPage += totalPageInOneFile; } }
$vbLabelText   $csharpLabel

コードの説明

このコードの目的は、IronPDFライブラリを使用して、指定されたPDFファイルを複数の小さなPDFファイルに分割することです。 この機能を実現するために、SplitPdfUsingIronPDFメソッドが定義されています。

メソッドパラメータ

  1. inputPdfPath: 入力PDFファイルへのパスを表す文字列(例: "input.pdf")。

  2. 出力フォルダー: 分割されたPDFファイルが保存される出力フォルダーを表す文字列(例:「output_split」)。

  3. NumberOfSplitFiles:元のPDFがいくつの小さなPDFファイルに分割されるかを示す整数。

分割プロセス

SplitPdfUsingIronPDFメソッド内:

  1. 指定されたinputPdfPathからPDFをロードすることにより、sourceFileという名前のPdfDocumentオブジェクトが作成されます。

  2. 2つの整数変数、firstPage と lastPage が初期化されます。 これらは分割のためのページ範囲を表しています。

  3. totalPageInOneFile は、ソースPDFの総ページ数を指定されたNumberOfSplitFilesで割ることによって計算されます。

  4. ループは1からNumberOfSplitFilesまで繰り返します。

  5. 新しい PdfDocument オブジェクトが newSplitPDF という名前で作成されます。

  6. firstPageからlastPage(含む)までのページがsourceFileからnewSplitPDFにコピーされます。

  7. 結果として得られる小さなPDFは、指定された出力フォルダに「SplitPDF_IronPDF_1.pdf」(最初の分割の場合)のようなファイル名で保存されます。

  8. 次の反復のために firstPage と lastPage の値が更新されます。

ノート

"input.pdf" を実際の入力PDFファイルのパスに置き換えてください。IronPDFライブラリが適切にインストールされ、プロジェクトに参照されていることを確認してください。

出力ファイルは次のように作成されます:

C#でのPDF分割におけるiTextSharpとIronPDFの比較:図3 - 作成された出力ファイル

iTextSharp を使用してC#でPDFを分割

次に、iTextSharpを使用してPDFドキュメントを複数のPDFファイルに分割します。 以下のコードは、ソースファイルを入力として受け取り、そのPDFドキュメントを複数の小さいファイルに分割します。

static void Main(string [] args)
 {
     string inputPath = "input.pdf";
     // Output PDF files path (prefix for the generated files)
     string outputPath = "output_split";
     int NumberOfSplitFiles = 3;
     // Call the SplitPdf method to split the PDF
     SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles);
 } 
static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     using (PdfReader Reader = new PdfReader(inputPdfPath))
     {
         using (PdfDocument doc = new PdfDocument(Reader))
         {
             int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
             int firstPage = 1;
             int lastPage = totalPageInOneFile; //  int pagenumber
             for (int i = 1; i <= NumberOfSplitFiles; i++)
             {
                 string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
                 using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
                 {
                     //pdfDocument.get
                     doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                 }
                 firstPage = lastPage + 1;
                 lastPage += totalPageInOneFile;
             }
         }
     }
 }
static void Main(string [] args)
 {
     string inputPath = "input.pdf";
     // Output PDF files path (prefix for the generated files)
     string outputPath = "output_split";
     int NumberOfSplitFiles = 3;
     // Call the SplitPdf method to split the PDF
     SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles);
 } 
static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     using (PdfReader Reader = new PdfReader(inputPdfPath))
     {
         using (PdfDocument doc = new PdfDocument(Reader))
         {
             int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
             int firstPage = 1;
             int lastPage = totalPageInOneFile; //  int pagenumber
             for (int i = 1; i <= NumberOfSplitFiles; i++)
             {
                 string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
                 using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
                 {
                     //pdfDocument.get
                     doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                 }
                 firstPage = lastPage + 1;
                 lastPage += totalPageInOneFile;
             }
         }
     }
 }
Shared Sub Main(ByVal args() As String)
	 Dim inputPath As String = "input.pdf"
	 ' Output PDF files path (prefix for the generated files)
	 Dim outputPath As String = "output_split"
	 Dim NumberOfSplitFiles As Integer = 3
	 ' Call the SplitPdf method to split the PDF
	 SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles)
End Sub
Shared Sub SplitPdfUsingiTextSharp(ByVal inputPdfPath As String, ByVal outputFolder As String, ByVal NumberOfSplitFiles As Integer)
	 Using Reader As New PdfReader(inputPdfPath)
		 Using doc As New PdfDocument(Reader)
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
			 Dim totalPageInOneFile As Integer = doc.GetNumberOfPages() / NumberOfSplitFiles
			 Dim firstPage As Integer = 1
			 Dim lastPage As Integer = totalPageInOneFile '  int pagenumber
			 For i As Integer = 1 To NumberOfSplitFiles
				 Dim filename As String = $"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf"
				 Using pdfDocument As New PdfDocument(New PdfWriter(filename)) ' create output file
					 'pdfDocument.get
					 doc.CopyPagesTo(firstPage, lastPage, pdfDocument)
				 End Using
				 firstPage = lastPage + 1
				 lastPage += totalPageInOneFile
			 Next i
		 End Using
	 End Using
End Sub
$vbLabelText   $csharpLabel

コードの説明

上記のコードは、iTextSharpを使用して大きなPDFファイルを小さな部分に分割する方法を示しています。それぞれの小さなPDFドキュメントには、元のドキュメントの一部が含まれます。

iTextSharpを用いたPDFの分割

  1. 主な機能は、SplitPdfUsingiTextSharpメソッドにカプセル化されています。

  2. 上記のメソッドは3つのパラメータを取ります:inputPdfPath、outputFolder、およびNumberOfSplitFiles。

PdfReaderとPdfDocumentの使用

SplitPdfUsingiTextSharpメソッド内:

  1. 指定されたinputPdfPathからPDFを読み込み、PdfReaderオブジェクトReaderが作成されます。

  2. Reader を使用して、DOC という名前の PdfDocument オブジェクトが初期化されます。

  3. 元のPDFの総ページ数はNumberOfSplitFilesで割られ、各小さなPDFが何ページを含むべきかが決定されます。

分割プロセス

ループは1からNumberOfSplitFilesまで繰り返します。

  1. 新しいより小さなPDFファイルが、指定された出力フォルダーに「SplitPDF_iTextSharp_1.pdf」(最初の分割の場合)のようなファイル名で作成されます。

  2. この新しいPDFドキュメント(pdfDocument)の中では、ページがオリジナルのドキュメントからコピーされています:

  3. firstPage から lastPage まで(含む)がコピーされます。

  4. より小さなPDFが保存されました。

  5. 次の反復のために firstPage と lastPage の値が更新されます。

ノート

iTextSharpライブラリが適切にインストールされ、プロジェクトに参照されていることを確認してください。 「input.pdf」を実際の入力PDFファイルのパスに置き換えてください。

C#におけるPDF分割の比較:iTextSharpとIronPDFの場合 図4 - 作成された出力ファイル

比較

iTextSharpとIronPDFの2つの分割メソッドを比較するために、いくつかの要素に基づいて評価しましょう:

  1. 使いやすさ:

    • iTextSharp: iTextSharpメソッドは、PdfReader、PdfDocument、およびPdfWriterを作成することに関与します。 ページ範囲を計算し、ページを新しいドキュメントにコピーします。 このアプローチには、iTextSharp APIを理解することが必要です。

    • IronPDF: IronPDFメソッドは、ソースファイルからPdfDocumentを作成し、ページをコピーして新しいファイルに保存するというものです。より簡潔なAPIがあります。
  2. コードの可読性:

    • iTextSharp: このコードはより多くのステップを含み、少し長くなり、読み手にとって潜在的に複雑になる可能性があります。

    • IronPDF: コードは、ステップやメソッド呼び出しが少ないため、簡潔で読みやすくなっています。
  3. パフォーマンス:

    • iTextSharp: PdfDocumentインスタンスの繰り返しの作成と破棄によってパフォーマンスに影響を与える可能性があります。

    • IronPDF: このメソッドは、ステップが少なく効率的なページコピーにより優れたパフォーマンスを提供します。
  4. メモリ使用量:

    • iTextSharp: 複数のPdfDocumentインスタンスを作成すると、より多くのメモリが消費されます。

    • IronPDF: この方法は、簡略化されたアプローチにより、メモリ効率が向上しています。

結論

結論として、iTextSharpとIronPDFの両方がC#でPDFファイルを分割するための堅牢なソリューションを提供し、それぞれに独自の利点があります。 IronPDFは、そのシンプルさ、読みやすさ、そしてより簡潔なアプローチによる潜在的なパフォーマンスの向上で際立っています。

多用途性と使いやすさのバランスを求める開発者にとって、IronPDF は魅力的な選択肢となるかもしれません。さらに、IronPDF には無料試用版があります。 最終的に、iTextSharpとIronPDFの選択は、各プロジェクトの要件および好まれる開発スタイルに依存します。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
PDFsharp対iTextSharp(C# PDFライブラリ比較)
次へ >
IronPDFとPDFSharpCoreの比較