透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
PDF(ポータブルドキュメントフォーマット)ファイルは、ドキュメントを共有および提示するために広く使用されており、PDFを複数のファイルに分割する必要があるときもあります。 特定のページを抽出したり、大きなドキュメントを小さなセクションに分割したり、各章ごとに個別のファイルを作成したりする場合、PDFを分割することは様々なシナリオで貴重な作業となります。
この記事では、C# を使用して PDF を分割する方法について学びます。 C#は多用途で強力な言語であり、PDFを操作するためのライブラリがいくつか利用可能で、比較的簡単に操作することができます。 C#でPDFを分割するための以下の2つのライブラリについて探ります。
iText7ライブラリを最初にインストールしてください。
入力されたPDFファイルからPdfReaderを作成します。
PdfDocumentを使用してPDFコンテンツを操作します。
それぞれの分割ファイルのページ数を計算します。
初期ページ範囲の値を設定します。
ループを使用して、それぞれの分割ファイルを処理します。
現在の分割ファイルのために新しいPdfDocumentを作成します。
元のドキュメントから新しいドキュメントにページをコピーします。
次のイテレーションのためにページ範囲の値を更新します。
完了した出力PDFを保存します。
全てのファイルが作成されるまで繰り返します。
IronPDFは、PDFファイルを扱うために設計された強力なC#ライブラリです。 PDFドキュメントからコンテンツを作成、変更、および抽出するための機能を提供します。 開発者はゼロからPDFを生成し、既存のPDFを編集し、結合または分割できます。 さらに、IronPDFはHTMLコンテンツをPDF形式に変換することに優れており、レポートやドキュメントの生成に役立ちます。 デジタル署名、セキュリティ機能、高品質な出力のサポートを備えたIronPDFは、.NETアプリケーションにおけるPDF関連のタスクを簡素化します。
iTextSharp (iText 7) は、.NET フレームワークで PDF ファイルを扱うために広く使用されているライブラリです。 それは、プログラム的にPDFドキュメントからコンテンツを作成、変更、抽出するための強力な機能を提供します。 開発者はiTextSharpを使用してPDFにテキスト、画像、表、およびその他のグラフィカル要素を追加することができます。 また、ドキュメントの組み立て、電子署名、アーカイブおよびアクセシビリティ基準への準拠もサポートしています。 もともとJavaライブラリであったiTextSharpは、.NETに移植され、開発者およびユーザーの活発なコミュニティがあります。
Visual Studio のパッケージ マネージャー コンソールを使用してIronPDF NuGet パッケージをインストールするには、次の手順に従います。
Visual Studioで、「ツール」 -> 「NuGetパッケージマネージャー」 -> 「パッケージマネージャーコンソール」に進みます。
:ProductInstall
これにより、IronPDFパッケージとその依存関係がプロジェクトにダウンロードおよびインストールされます。 インストールが完了したら、C#プロジェクトでPDF関連のタスクにIronPDFを使用し始めることができます。
別の方法として、Visual Studio の NuGet パッケージ マネージャーを使用して IronPDF をインストールするか、パッケージをプロジェクト ファイルに直接追加することができます。もう一つのオプションは、公式ウェブサイト からパッケージをダウンロードしてプロジェクトに手動で追加することです。 各メソッドは、PDF関連の機能をC#プロジェクトに統合するための簡単な方法を提供します。
Visual Studioのパッケージ マネージャー コンソールを使用してiTextSharpをインストールするには、次の手順に従います。
Visual Studioで、「ツール」 -> 「NuGetパッケージマネージャー」 -> 「パッケージマネージャーコンソール」に進みます。
Install-Package itext7
これにより、iTextSharpパッケージとその依存関係がプロジェクトにダウンロードおよびインストールされます。 インストールが完了したら、C#プロジェクトでiTextSharpを使用して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; } }
このコードの目的は、IronPDFライブラリを使用して、指定されたPDFファイルを複数の小さなPDFファイルに分割することです。 この機能を実現するために、SplitPdfUsingIronPDFメソッドが定義されています。
inputPdfPath: 入力PDFファイルへのパスを表す文字列(例: "input.pdf")。
出力フォルダー: 分割されたPDFファイルが保存される出力フォルダーを表す文字列(例:「output_split」)。
SplitPdfUsingIronPDFメソッド内:
指定されたinputPdfPathからPDFをロードすることにより、sourceFileという名前のPdfDocumentオブジェクトが作成されます。
2つの整数変数、firstPage と lastPage が初期化されます。 これらは分割のためのページ範囲を表しています。
totalPageInOneFile は、ソースPDFの総ページ数を指定されたNumberOfSplitFilesで割ることによって計算されます。
ループは1からNumberOfSplitFilesまで繰り返します。
新しい PdfDocument オブジェクトが newSplitPDF という名前で作成されます。
firstPageからlastPage(含む)までのページがsourceFileからnewSplitPDFにコピーされます。
結果として得られる小さなPDFは、指定された出力フォルダに「SplitPDF_IronPDF_1.pdf」(最初の分割の場合)のようなファイル名で保存されます。
"input.pdf" を実際の入力PDFファイルのパスに置き換えてください。IronPDFライブラリが適切にインストールされ、プロジェクトに参照されていることを確認してください。
出力ファイルは次のように作成されます:
次に、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
上記のコードは、iTextSharpを使用して大きなPDFファイルを小さな部分に分割する方法を示しています。それぞれの小さなPDFドキュメントには、元のドキュメントの一部が含まれます。
主な機能は、SplitPdfUsingiTextSharpメソッドにカプセル化されています。
SplitPdfUsingiTextSharpメソッド内:
指定されたinputPdfPathからPDFを読み込み、PdfReaderオブジェクトReaderが作成されます。
Reader を使用して、DOC という名前の PdfDocument オブジェクトが初期化されます。
ループは1からNumberOfSplitFilesまで繰り返します。
新しいより小さなPDFファイルが、指定された出力フォルダーに「SplitPDF_iTextSharp_1.pdf」(最初の分割の場合)のようなファイル名で作成されます。
この新しいPDFドキュメント(pdfDocument)の中では、ページがオリジナルのドキュメントからコピーされています:
firstPage から lastPage まで(含む)がコピーされます。
より小さなPDFが保存されました。
iTextSharpライブラリが適切にインストールされ、プロジェクトに参照されていることを確認してください。 「input.pdf」を実際の入力PDFファイルのパスに置き換えてください。
iTextSharpとIronPDFの2つの分割メソッドを比較するために、いくつかの要素に基づいて評価しましょう:
使いやすさ:
iTextSharp: iTextSharpメソッドは、PdfReader、PdfDocument、およびPdfWriterを作成することに関与します。 ページ範囲を計算し、ページを新しいドキュメントにコピーします。 このアプローチには、iTextSharp APIを理解することが必要です。
コードの可読性:
iTextSharp: このコードはより多くのステップを含み、少し長くなり、読み手にとって潜在的に複雑になる可能性があります。
パフォーマンス:
iTextSharp: PdfDocumentインスタンスの繰り返しの作成と破棄によってパフォーマンスに影響を与える可能性があります。
メモリ使用量:
iTextSharp: 複数のPdfDocumentインスタンスを作成すると、より多くのメモリが消費されます。
結論として、iTextSharpとIronPDFの両方がC#でPDFファイルを分割するための堅牢なソリューションを提供し、それぞれに独自の利点があります。 IronPDFは、そのシンプルさ、読みやすさ、そしてより簡潔なアプローチによる潜在的なパフォーマンスの向上で際立っています。
多用途性と使いやすさのバランスを求める開発者にとって、IronPDF は魅力的な選択肢となるかもしれません。さらに、IronPDF には無料試用版があります。 最終的に、iTextSharpとIronPDFの選択は、各プロジェクトの要件および好まれる開発スタイルに依存します。