iText ライブラリを使用して Java で PDF を作成して読み取る
- PDF ファイルを操作するための PDF とライブラリ
-
iText
ライブラリの機能 -
Eclipse に
iText
ライブラリをインストールする手順 -
Java で
iText
ライブラリを使用して PDF ファイルを作成する手順 -
Java で
iText
ライブラリを使用して PDF ファイルを読み取る手順
iText
ライブラリは、Java で PDF ファイルを作成、操作、および読み取るためのオープンソースライブラリです。この記事では、iText
ライブラリ、Eclipse でのインストール、および iText
ライブラリを使用した Java での PDF ファイルの作成と読み取りについて説明します。
PDF ファイルを操作するための PDF とライブラリ
Portable Document Format(PDF)は、ファイルを使用した広く使用されているデータ交換形式です。PDF は、ハードウェア、オペレーティングシステム、およびソフトウェアから独立しています。
したがって、非常に人気があり、テキスト、画像、その他のデータ型によく使用されます。
PDF ファイルを作成、読み取り、操作するために、多くのライブラリを利用できます。これらのライブラリのいくつかを以下に示します。
-
iText
-iText
のコミュニティバージョンはオープンソースライブラリです。Java を使用して PDF ファイルを読み取り、作成し、操作します。階層構造であり、任意の複雑な PDF ファイルを実行して目的の結果を生成できます。
iText
ライブラリは Java と.NET で利用できます。 -
Adobe PDF
ライブラリ-Adobe は、PDF ファイルを作成、操作、および読み取るためにこのライブラリを開発しました。このライブラリを使用して PDF を印刷することもできます。このライブラリは、C++、Java、.NET などのさまざまな言語で動作します。
-
PDFBox
- これは別のオープンソースライブラリです。Apache は、PDF ファイルを作成、編集、および表示するためにこのライブラリを開発し、Java で使用できます。 -
Jasper Reports
- このレポートツールは、PDF ファイルでレポートを生成できます。
iText
ライブラリの機能
iText
ライブラリの機能のいくつかを見てみましょう。
- PDF ファイルの作成-
iText
ライブラリを使用して、任意に複雑でインタラクティブな PDF ファイルを作成できます。PDF ファイルに画像を挿入することもできます。 iText
ライブラリを使用して、ブックマークの作成、ページ番号の追加、および PDF ファイルへの透かしの追加を行うことができます。- PDF ファイルに対して分割およびマージ操作を実行できます。
iText
ライブラリは、PDF ファイルのインタラクティブフォームを操作する機能を提供します。- PDF ファイルを JPG、PNG などのさまざまな形式の画像として保存できます。
Eclipse に iText
ライブラリをインストールする手順
iText
ライブラリはサードパーティのオープンソースソフトウェアであり、使用する前に Java プロジェクトとは別にインストールする必要があります。この記事では、Eclipse での iText
のインストール手順について説明します。
Eclipse は、Java でのアプリケーション開発に使用される最も人気のある IDE の 1つです。この記事は、Java と Eclipse がすでにインストールされていることを前提としています。
他の IDE で作業している場合でも、インストールプロセスは同様です。
iText
ライブラリを Eclipse プロジェクトに追加する手順を見てみましょう。
-
Eclipse でプロジェクトを作成します(
ファイル
->新規
->Java プロジェクト
)。 -
プロジェクトを右クリックすると、ドロップダウンメニューが表示されます。
-
構成
に移動します。 -
Maven プロジェクトに変換
をクリックします。 -
プロジェクトフォルダに
pom.xml
という名前の新しいファイルが表示されます。 -
pom.xml
を開き、<project>
タグ内および<build>
タグの後に次の依存関係を追加します。<dependencies> <dependency> <groupId>com.itextpdf</groupId> <artifactId>barcodes</artifactId> <version>7.2.1</version> <!-- barcodes depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>font-asian</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>forms</artifactId> <version>7.2.1</version> <!-- forms depends on kernel and layout --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>hyph</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>io</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>kernel</artifactId> <version>7.2.1</version> <!-- kernel depends on io --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>layout</artifactId> <version>7.2.1</version> <!-- layout depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>pdfa</artifactId> <version>7.2.1</version> <!-- pdfa depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>sign</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>commons</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>styled-xml-parser</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>svg</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.13.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.13.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.13.3</version> </dependency> </dependencies>
プロジェクトは、書き込み時に
iText
ライブラリの最新バージョン(7.2.1)を使用することに注意してください。利用可能な場合は、新しいバージョンにアップグレードできます。 -
メニューバーの
File
に移動し、Refresh
をクリックします。
これにより、必要なライブラリがプロジェクトにインポートされます。ライブラリは Maven リポジトリからダウンロードされるため、安定したインターネット接続が必要です。
Java で iText
ライブラリを使用して PDF ファイルを作成する手順
ライブラリをインストールしたら、iText
ライブラリを使用して、Java プログラムを使用して PDF ファイルを作成できます。
iText
ライブラリには、書き込むための新しい pdf ファイルを作成する PdfWriter
という名前のクラスがあります。ファイルを開いたら、テキストや画像などを追加します。
PDF ファイルを作成し、それにテキストと画像を追加する手順を理解しましょう。
-
ファイルの名前をパラメーターとしてコンストラクターに渡して、
PdfWriter
クラスのインスタンスを作成します。 -
PdfWriter
クラスをコンストラクターに渡して、PdfDocument
クラスのインスタンスの作成に進みます。このクラスは、PDF ファイルへの書き込みを担当します。 -
最後に、
Document
クラスインスタンスを作成します。PdfDocument
クラスインスタンスにアタッチします。このクラスは、個々の要素を pdf ファイルに添付するために使用されます。
-
この時点で、PDF ファイルにテキストと画像を書き込む準備ができています。
Java で iText
ライブラリを使用して PDF ファイルにテキストを書き込む手順
ファイルにテキストを書き込む手順を見てみましょう。
Paragraph
クラスは、テキストを pdf に書き込むために使用されます。したがって、Paragraph
クラスのインスタンスを作成する必要があります。add()
メソッドを呼び出すことにより、テキストを追加できます。setTextAlignment()
、setFont()
などのさまざまなメソッドを呼び出すことにより、テキストの外観を変更できます。- 最後に、
add()
メソッドを呼び出して、paragraph
インスタンスをDocument
インスタンスに追加します。
最後に、すべてのインスタンスをドキュメントに追加したら、Document
クラスの close()
メソッドを呼び出してドキュメントを閉じる必要があります。
Java で iText
ライブラリを使用して PDF を作成するコード例
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;
public class pdfExample {
public static void main(String[] args) {
String file = "sample_pdf.pdf";
try {
createPdf(file);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void createPdf(String file) throws IOException {
PdfWriter writer = new PdfWriter(file);
PdfDocument pdfDoc = new PdfDocument(writer);
Document doc = new Document(pdfDoc);
PdfFont myFont = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN);
Paragraph p1 = new Paragraph();
p1.add("Hello, This is Delftstack!");
p1.setTextAlignment(TextAlignment.CENTER);
p1.setFont(myFont);
p1.setFontSize(28);
doc.add(p1);
Paragraph p2 = new Paragraph();
p2.add("We help you understand the concepts.");
p2.setFontSize(18);
doc.add(p2);
doc.close();
}
}
上記のコードを使用して作成された pdf ファイルを以下に示します。
Java で iText
ライブラリを使用して PDF ファイルを読み取る手順
iText
ライブラリは、PDF ファイルを読み取るための PdfReader
クラスを提供します。以下の手順で PDF ファイルを読み取ることができます。
- まず、ファイルのパスをコンストラクターに渡して、
PdfReader
クラスのインスタンスを作成する必要があります。 PdfReader
のインスタンスをコンストラクターに渡して、PdfDocument
クラスインスタンスを作成します。- PDF ファイルに複数のページが含まれている場合は、各ページをループする必要があります。ページ数を取得するには、
PdfDocument
クラスのインスタンスを使用してgetNumberOfPages()
メソッドを呼び出すことができます。 - 各ページをループします。
1.ドキュメントの現在のページを渡して、PdfTextExtractor
クラスのgetTextFromPage()
メソッドを呼び出します。
2.現在のページを取得するには、Document
クラスのgetPage()
メソッドを呼び出して、現在のページ番号を渡す必要があります。
3.getTextFromPage()
メソッドは静的であるため、クラスインスタンスは必要ありません。
4.このメソッドは、現在のページのすべてのテキストを返します。文字列
変数に保存できます。
5. テキストを処理します(たとえば、コンソールに表示します)。
Java で iText
ライブラリを使用して PDF を読み取るコード例
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;
public class pdfExample {
public static void main(String[] args) {
String file = "sample_pdf.pdf";
try {
readpdf(file);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void readpdf(String file) throws IOException {
PdfReader pr = new PdfReader(file);
PdfDocument doc = new PdfDocument(pr);
int num = doc.getNumberOfPages();
for (int i = 1; i <= num; i++) {
String str = PdfTextExtractor.getTextFromPage(doc.getPage(i));
System.out.println(str);
}
}
}
出力:
Hello, This is Delftstack!
We help you understand the concepts.
まとめ
この記事では、iText
ライブラリを使用した PDF ファイルの読み取りと書き込みの基本について説明します。ただし、iText
ライブラリは PDF ファイルに対して複雑な操作を実行できます。
iText
ライブラリとその機能の詳細については、ドキュメントにアクセスしてください。