製品比較

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

公開済み 2024年3月6日
共有:

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

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

1.**テキスト・シャープ

  1. IronPDF

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

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

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

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

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

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

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

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

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

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

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

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

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

    IronPDF

IronPDFは、.NETおよびJava、Python、Node.jsでPDFを生成、編集、読み取るための強力なツールです。プログラマー向けに最適化されており、コードからPDFファイルの作成を容易に行うことができます。IronPDFは、HTML、CSS、JavaScript、および画像をPDFドキュメントに変換する能力を提供します。

機能

  • HTML to PDF: HTML、CSS、JavaScriptを利用してPDFを生成。
  • PDFの編集: 既存のPDFドキュメントにテキスト、画像、ページ番号、さらにはカスタムヘッダーやフッターを追加。
  • PDFの読み取り: PDFファイルからテキスト、画像、メタデータを抽出。
  • セキュリティ: パスワード保護や暗号化オプションでPDFドキュメントを保護。

利点

  • 使いやすさ: シンプルなAPIで時間を節約。
  • 高品質: 正確で美しいPDFドキュメントを生成。
  • 柔軟性: 様々なプラットフォームや言語で利用可能。

対応ライセンス

IronPDFは様々なライセンスオプションがあり、Lite License、Plus License、Professional License、Unlimited Licenseが用意されています。

技術サポートや詳細については、Iron Softwareの公式サイトをご覧ください。

C#でPDFを分割する際のiTextSharpとIronPDFの比較:図1 - IronPDFウェブページ

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

iTextSharp

iTextSharp

iTextSharpは、.NETフレームワーク用の無料のPDFライブラリです。このライブラリは、PDFドキュメントの作成、操作、および検索のための強力なツールセットを提供します。iTextSharpを使用することで、プログラマーは簡単に複雑なPDFファイルを生成および操作することができます。

iTextSharpの主な機能:

  • PDFドキュメントの生成と変更
  • テキスト、画像、および注釈の追加
  • エクスポート機能を利用した他のフォーマットとの変換
  • 既存のPDFの解析と内容の検索

iTextSharpは、商用およびオープンソースプロジェクトの両方で使用される、信頼性の高いツールです。

C#でPDFを分割する際のiTextSharpとIronPDFの比較: 図2 - iTextSharpウェブページ

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

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

インストールするにはIronPDF NuGetパッケージVisual Studioのパッケージマネージャーコンソールを使用して、以下の手順に従ってください:

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

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

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

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

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

インストールするには**テキストシャープVisual Studio 内のパッケージマネージャーコンソールを使用して、次の手順に従います:

  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; } }
VB   C#

コードの説明

このコードの目的は、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. 最初のページから最後のページまで(包括的)sourceFileからnewSplitPDFにコピーされます。

  7. 結果として生成された小さいPDFは、「SplitPDF_IronPDF_1.pdf」などのファイル名で保存されます。(最初のスプリットのために)指定された出力フォルダーに。

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

ノート

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

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

C#において、iTextSharpとIronPDFを使用したPDF分割の比較: 図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
VB   C#

コードの説明

上記のコードは、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ドキュメント内(PDFドキュメント)ページはオリジナルドキュメントからコピーされています:

  3. 最初のページから最後のページまで(包括的)コピーされます。

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

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

ノート

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

C#でのiTextSharpとIronPDFのPDF分割の比較: 図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の選択は、各プロジェクトの要件および好まれる開発スタイルに依存します。

< 以前
PDFsharp対iTextSharp(C# PDFライブラリ比較)
次へ >
IronPDFとPDFSharpCoreの比較