Pdfbox-quick-guide
PDFBox-概要
Portable Document Format(PDF)は、アプリケーションソフトウェア、ハードウェア、およびオペレーティングシステムに依存しない方法でデータを表示するのに役立つファイル形式です。
各PDFファイルには、テキスト、フォント、グラフィックス、および表示に必要なその他の情報を含む、固定レイアウトのフラットドキュメントの説明が含まれています。
次のようなプログラムを介してPDFドキュメントを作成および操作するために利用できるいくつかのライブラリがあります-
- Adobe PDF Library -このライブラリは、C++、。NET、Javaなどの言語でAPIを提供し、これを使用して、PDFドキュメントからテキストを編集、印刷、抽出できます。
- Formatting Objects Processor -XSL Formatting Objectsおよび出力に依存しないフォーマッタによって駆動されるオープンソース印刷フォーマッタ。 主な出力先はPDFです。
- iText -このライブラリは、Java、C#、およびその他の.NET言語などの言語でAPIを提供し、このライブラリを使用してPDF、RTF、およびHTMLドキュメントを作成および操作できます。
- JasperReports -これは、Microsoft Excel、RTF、ODT、コンマ区切り値、XMLファイルなどのPDFドキュメントでレポートを生成するJavaレポートツールです。
PDFBoxとは
Apache PDFBoxは、PDFドキュメントの開発と変換をサポートするオープンソースのJavaライブラリです。 このライブラリを使用すると、PDFドキュメントを作成、変換、操作するJavaプログラムを開発できます。
これに加えて、PDFBoxには、使用可能なJarファイルを使用してPDFに対してさまざまな操作を実行するためのコマンドラインユーティリティも含まれています。
PDFBoxの機能
PDFBoxの注目すべき機能は次のとおりです-
- テキストの抽出-PDFBoxを使用すると、PDFファイルからUnicodeテキストを抽出できます。
- 分割とマージ-PDFBoxを使用すると、単一のPDFファイルを複数のファイルに分割し、それらを単一のファイルとしてマージして戻すことができます。
- フォームに記入-PDFBoxを使用して、ドキュメントにフォームデータを記入できます。
- 印刷-PDFBoxを使用すると、標準のJava印刷APIを使用してPDFファイルを印刷できます。
- 画像として保存-PDFBoxを使用して、PNGをPNGやJPEGなどの画像ファイルとして保存できます。
- * PDFの作成*-PDFBoxを使用すると、Javaプログラムを作成して新しいPDFファイルを作成できます。また、画像やフォントを含めることもできます。
- 署名-PDFBoxを使用して、PDFファイルにデジタル署名を追加できます。
PDFBoxのアプリケーション
以下は、PDFBoxのアプリケーションです-
- Apache Nutch -Apache Nutchは、オープンソースのWeb検索ソフトウェアです。 Apache Luceneをベースに構築され、クローラー、リンクグラフデータベース、HTMLパーサー、およびその他のドキュメント形式などのWeb固有のものを追加します。
- Apache Tika -Apache Tikaは、既存のパーサーライブラリを使用して、さまざまなドキュメントからメタデータと構造化テキストコンテンツを検出および抽出するためのツールキットです。
PDFBoxのコンポーネント
以下は、PDFBoxの4つの主要なコンポーネントです-
- PDFBox -これはPDFBoxの主要部分です。 これには、コンテンツの抽出と操作に関連するクラスとインターフェースが含まれます。
- FontBox -これには、フォントに関連するクラスとインターフェイスが含まれており、これらのクラスを使用して、PDFドキュメントのテキストのフォントを変更できます。
- XmpBox -これには、XMPメタデータを処理するクラスとインターフェイスが含まれています。
- Preflight -このコンポーネントは、PDF/A-1b標準に対してPDFファイルを検証するために使用されます。
PDFBox-環境
PDFBoxのインストール
Apache PDFBoxをダウンロードする手順は次のとおりです-
ステップ1 *-次のリンクをクリックして *Apache PDFBox のホームページを開きます-https://pdfbox.apache.org/
- ステップ2 *-上記のリンクをクリックすると、次のスクリーンショットに示すようにホームページが表示されます-
- ステップ3 *-次に、上記のスクリーンショットで強調表示されている*ダウンロード*リンクをクリックします。 クリックすると、次のスクリーンショットに示すように、PDFBoxのダウンロードページに移動します。
ステップ4 *-ダウンロードページに、PDFBoxのリンクがあります。 最新リリースの各リンクをクリックします。 たとえば、 *PDFBox 2.0.1 を選択しています。これをクリックすると、次のスクリーンショットに示すように、必要なjarファイルが表示されます。
- ステップ5 *-jarファイルpdfbox-2.0.1.jar、fontbox-2.0.1.jar、preflight-2.0.1.jar、xmpbox-2.0.1.jar、およびpdfbox-tools-2.0.1をダウンロードします。瓶。
Eclipseのインストール
必要なjarファイルをダウンロードしたら、これらのJARファイルをEclipse環境に埋め込む必要があります。 これを行うには、ビルドパスをこれらのJARファイルに設定し、 pom.xml を使用します。
ビルドパスの設定
EclipseにPDFBoxをインストールする手順は次のとおりです-
- ステップ1 *-システムにEclipseがインストールされていることを確認します。 そうでない場合は、システムにEclipseをダウンロードしてインストールします。
- ステップ2 *-次のスクリーンショットに示すように、Eclipseを開き、[ファイル]、[新規]の順にクリックして、新しいプロジェクトを開きます。
- ステップ3 *-プロジェクトを選択すると、*新しいプロジェクト*ウィザードが表示されます。 このウィザードで、Javaプロジェクトを選択し、次のスクリーンショットに示すように[次へ]ボタンをクリックして続行します。
- ステップ4 *-先に進むと、*新しいJavaプロジェクトウィザード*に移動します。 次のスクリーンショットに示すように、新しいプロジェクトを作成し、[次へ]をクリックします。
ステップ5 *-新しいプロジェクトを作成した後、それを右クリックします。次のスクリーンショットに示すように、 *Build Path を選択し、* Configure Build Path…*をクリックします。
ステップ6 *-*ビルドパス*オプションをクリックすると、 Javaビルドパスウィザード*が表示されます。 次のスクリーンショットに示すように、 Add External JARs を選択します。
ステップ7 *-jarファイルを選択 *fontbox-2.0.1.jar、pdfbox-2.0.1.jar、pdfbox-tools-2.0.1.jar、preflight-2.0.1.jar、xmpbox-2.0.1次のスクリーンショットに示すjar 。
- ステップ8 *-上記のスクリーンショットの*開く*ボタンをクリックすると、次のスクリーンショットに示すように、これらのファイルがライブラリに追加されます。
ステップ9 *- *OK をクリックすると、必要なJARファイルが現在のプロジェクトに正常に追加され、次のスクリーンショットに示すように、参照ライブラリを展開してこれらの追加ライブラリを確認できます。
pom.xmlを使用する
プロジェクトをMavenプロジェクトに変換し、次の内容をその* pom.xml。*に追加します
PDFBox-PDFドキュメントの作成
PDFBoxライブラリを使用してPDFドキュメントを作成する方法を理解しましょう。
空のPDFドキュメントの作成
空のPDFドキュメントを作成する手順は次のとおりです。
ステップ1:空のドキュメントを作成する
パッケージ org.apache.pdfbox.pdmodel に属する PDDocument クラスは、PDFDocumentのメモリ内表現です。 したがって、このクラスをインスタンス化することにより、次のコードブロックに示すように空のPDFDocumentを作成できます。
ステップ2:ドキュメントを保存する
ドキュメントを作成したら、このドキュメントを目的のパスに保存する必要があります。 PDDocument クラスの* Save()メソッドを使用して保存できます。 このメソッドは、ドキュメントを保存するパスを表す文字列値をパラメーターとして受け入れます。 以下は、 *PDDocument クラスのsave()メソッドのプロトタイプです。
ステップ3:ドキュメントを閉じる
タスクが完了したら、最後に、* close()メソッドを使用して *PDDocument オブジェクトを閉じる必要があります。 以下は、 PDDocument クラスのclose()メソッドのプロトタイプです。
例
この例は、PDFドキュメントの作成を示しています。 ここでは、Javaプログラムを作成して、 my_doc.pdf という名前のPDFドキュメントを生成し、パス C:/PdfBox_Examples/ に保存します。 このコードを* Document_Creation.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは、次のメッセージを表示するPDFドキュメントを作成します。
指定されたパスを確認すると、以下に示すように作成されたPDFドキュメントを見つけることができます。
これは空のドキュメントであるため、このドキュメントを開こうとすると、次のスクリーンショットに示すようにエラーメッセージを表示するプロンプトが表示されます。
PDFBox-ページの追加
前の章では、PDFドキュメントを作成する方法を見てきました。 PDFドキュメントを作成したら、ページを追加する必要があります。 PDFドキュメントにページを追加する方法を理解しましょう。
PDFドキュメントへのページの追加
以下は、空のドキュメントを作成してページを追加する手順です。
ステップ1:空のドキュメントを作成する
以下に示すように PDDocument クラスをインスタンス化して、空のPDFドキュメントを作成します。
ステップ2:空白のページを作成する
ステップ3:ドキュメントにページを追加する
したがって、次のコードブロックに示すように、前の手順で作成した空白ページをPDDocumentオブジェクトに追加します。
この方法で、PDFドキュメントに必要な数のページを追加できます。
ステップ4:ドキュメントを保存する
すべてのページを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ5:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
この例では、PDFドキュメントを作成してページを追加する方法を示します。 ここでは、 my_doc.pdf という名前のPDFドキュメントを作成し、さらに10の空白ページを追加して、パス C:/PdfBox_Examples/ に保存します。 このコードを* Adding_pages.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行時に、上記のプログラムは、次のメッセージを表示する空白ページを含むPDFドキュメントを作成します-
指定したパスを確認すると、次のスクリーンショットに示すように、作成されたPDFドキュメントを見つけることができます。
PDFBox-ドキュメントの読み込み
前の例では、新しいドキュメントを作成してページを追加する方法を見てきました。 この章では、システムにすでに存在するPDFドキュメントをロードし、そのドキュメントでいくつかの操作を実行する方法を説明します。
既存のPDFドキュメントの読み込み
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:必要な操作を実行する
ページの追加、テキストの追加、読み込んだドキュメントへの画像の追加など、必要な操作を実行します。
ステップ3:ドキュメントを保存する
すべてのページを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ4:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
次のスクリーンショットに示すように、パスに C:/PdfBox_Examples/ という単一のページを含むPDFドキュメントがあるとします。
この例は、既存のPDFドキュメントをロードする方法を示しています。 ここでは、上記のPDFドキュメント sample.pdf を読み込み、ページを追加して、同じパスに同じ名前で保存します。
ステップ1 *-このコードを LoadingExistingDocument.java。*という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは指定されたPDFドキュメントをロードし、次のメッセージを表示する空のページを追加します。
指定したパスを確認すると、以下に示すように、指定したPDFドキュメントに追加された追加ページを見つけることができます。
PDFBox-ページの削除
PDFドキュメントからページを削除する方法を学びましょう。
既存のドキュメントからページを削除する
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:ページ数のリスト
以下に示すように、* getNumberOfPages()*メソッドを使用して、PDF文書に存在するページ数をリストできます。
ステップ3:ページを削除する
PDFドキュメント内のページのインデックスを指定する際、これらのページのインデックスはゼロから始まることに注意してください。つまり、1 ^ st ^ページを削除する場合は、インデックス値を0にする必要があります。
ステップ4:ドキュメントを保存する
ページを削除した後、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ5:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
この例は、既存のPDFドキュメントからページを削除する方法を示しています。 ここでは、 sample.pdf という上記の指定されたPDFドキュメントをロードし、そこからページを削除して、パス C:/PdfBox_Examples/ に保存します。 このコードを Removing_pages.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは、次のメッセージを表示する空白ページを含むPDFドキュメントを作成します。
指定したパスを検証すると、必要なページが削除され、以下に示すようにドキュメントに2ページしか残っていないことがわかります。
PDFBox-ドキュメントプロパティ
他のファイルと同様に、PDFドキュメントにもドキュメントプロパティがあります。 これらのプロパティはキーと値のペアです。 各プロパティは、ドキュメントに関する特定の情報を提供します。
以下は、PDFドキュメントのプロパティです-
S.No. | Property & Description |
---|---|
1 |
File このプロパティは、ファイルの名前を保持します。 |
2 |
Title このプロパティを使用して、ドキュメントのタイトルを設定できます。 |
3 |
Author このプロパティを使用して、ドキュメントの作成者の名前を設定できます。 |
4 |
Subject このプロパティを使用して、PDFドキュメントの件名を指定できます。 |
5 |
Keywords このプロパティを使用すると、ドキュメントを検索できるキーワードをリストできます。 |
6 |
Created このプロパティを使用して、ドキュメントに作成された日付を設定できます。 |
7 |
Modified このプロパティを使用して、ドキュメントの変更日を設定できます。 |
8 |
Application このプロパティを使用して、ドキュメントのアプリケーションを設定できます。 |
以下は、PDFドキュメントのドキュメントプロパティテーブルのスクリーンショットです。
ドキュメントプロパティの設定
PDFBoxは、 PDDocumentInformation という名前のクラスを提供します。 このクラスには、setterメソッドとgetterメソッドのセットがあります。
このクラスのセッターメソッドは、ドキュメントのさまざまなプロパティに値を設定するために使用され、これらの値を取得するために使用されるゲッターメソッドです。
以下は PDDocumentInformation クラスのセッターメソッドです。
S.No. | Method & Description |
---|---|
1 |
setAuthor(String author) このメソッドは、 Author という名前のPDFドキュメントのプロパティの値を設定するために使用されます。 |
2 |
setTitle(String title) このメソッドは、 Title という名前のPDFドキュメントのプロパティの値を設定するために使用されます。 |
3 |
setCreator(String creator) このメソッドは、 Creator という名前のPDFドキュメントのプロパティの値を設定するために使用されます。 |
4 |
setSubject(String subject) このメソッドは、 Subject という名前のPDFドキュメントのプロパティの値を設定するために使用されます。 |
5 |
setCreationDate(Calendar date) このメソッドは、 CreationDate という名前のPDFドキュメントのプロパティの値を設定するために使用されます。 |
6 |
setModificationDate(Calendar date) このメソッドは、 ModificationDate という名前のPDFドキュメントのプロパティの値を設定するために使用されます。 |
7 |
setKeywords(String keywords list) このメソッドは、 Keywords という名前のPDFドキュメントのプロパティの値を設定するために使用されます。 |
例
PDFBoxは PDDocumentInformation というクラスを提供し、このクラスはさまざまなメソッドを提供します。 これらのメソッドは、ドキュメントにさまざまなプロパティを設定して取得できます。
この例では、 Author、Title、Date、Subject などのプロパティをPDFドキュメントに追加する方法を示します。 ここでは、 doc_attributes.pdf という名前のPDFドキュメントを作成し、さまざまな属性を追加して、パス C:/PdfBox_Examples/ に保存します。 このコードを AddingAttributes.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
上記のプログラムは、実行時に、指定されたすべての属性を次のメッセージを表示するドキュメントに追加します。
これで、指定されたパスにアクセスすると、そのパスで作成されたPDFを見つけることができます。 ドキュメントを右クリックして、下に示すようにドキュメントプロパティオプションを選択します。
これにより、ドキュメントプロパティウィンドウが表示され、ここで、ドキュメントのすべてのプロパティが指定された値に設定されていることを確認できます。
ドキュメントプロパティの取得
以下は PDDocumentInformation クラスの取得メソッドです。
S.No. | Method & Description |
---|---|
1 |
getAuthor() このメソッドは、 Author という名前のPDFドキュメントのプロパティの値を取得するために使用されます。 |
2 |
getTitle() このメソッドは、 Title という名前のPDFドキュメントのプロパティの値を取得するために使用されます。 |
3 |
getCreator() このメソッドは、 Creator という名前のPDFドキュメントのプロパティの値を取得するために使用されます。 |
4 |
getSubject() このメソッドは、 Subject という名前のPDFドキュメントのプロパティの値を取得するために使用されます。 |
5 |
getCreationDate() このメソッドは、 CreationDate という名前のPDFドキュメントのプロパティの値を取得するために使用されます。 |
6 |
getModificationDate() このメソッドは、 ModificationDate という名前のPDFドキュメントのプロパティの値を取得するために使用されます。 |
7 |
getKeywords() このメソッドは、 Keywords という名前のPDFドキュメントのプロパティの値を取得するために使用されます。 |
例
この例は、既存のPDFドキュメントのプロパティを取得する方法を示しています。 ここでは、Javaプログラムを作成し、パス C:/PdfBox_Examples/ に保存されている doc_attributes.pdf という名前のPDFドキュメントをロードし、そのプロパティを取得します。 このコードを RetrivingDocumentAttributes.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行すると、上記のプログラムはドキュメントのすべての属性を取得し、次のように表示します。
PDFBox-テキストの追加
前の章では、PDFドキュメントにページを追加する方法について説明しました。 この章では、既存のPDFドキュメントにテキストを追加する方法について説明します。
既存のPDFドキュメントへのテキストの追加
PDFBoxライブラリを使用してドキュメントにコンテンツを追加できます。これにより、PDFDocumentのページにテキスト、画像、その他のタイプのコンテンツを挿入するために必要なメソッドを含むPDPageContentStreamというクラスが提供されます。
以下は、空のドキュメントを作成し、そのページにコンテンツを追加する手順です。
ステップ1:既存のドキュメントの読み込み
PDDocumentクラスの* load()*メソッドを使用して、既存のドキュメントをロードできます。 したがって、このクラスをインスタンス化し、以下に示すように必要なドキュメントをロードします。
ステップ2:必要なページを取得する
- getPage()*メソッドを使用して、ドキュメント内の必要なページを取得できます。 以下に示すように、このメソッドにインデックスを渡すことにより、必要なページのオブジェクトを取得します。
ステップ3:コンテンツストリームの準備
クラス PDPageContentStream のオブジェクトを使用して、さまざまな種類のデータ要素を挿入できます。 したがって、ドキュメントオブジェクトとページオブジェクトをこのクラスのコンストラクターに渡す必要があります。以下に示すように、前の手順で作成したこれら2つのオブジェクトを渡すことにより、このクラスをインスタンス化します。
ステップ4:テキストの開始
PDFドキュメントにテキストを挿入するときに、以下に示すようにPDPageContentStreamクラスのbeginText()およびendText()メソッドを使用して、テキストの開始点と終了点を指定できます。
したがって、以下に示すように* beginText()*メソッドを使用してテキストを開始します。
ステップ5:テキストの位置を設定する
- newLineAtOffset()*メソッドを使用して、ページ内のコンテンツストリームの位置を設定できます。
ステップ6:フォントの設定
以下に示すように、 PDPageContentStream クラスの* setFont()*メソッドを使用して、テキストのフォントを必要なスタイルに設定できます。 このメソッドには、フォントのタイプとサイズを渡す必要があります。
ステップ7:テキストの挿入
以下に示すように、 PDPageContentStream クラスの* ShowText()*メソッドを使用して、ページにテキストを挿入できます。 このメソッドは、文字列の形式で必要なテキストを受け入れます。
ステップ8:テキストの終了
テキストを挿入した後、以下に示すように、 PDPageContentStream クラスの* endText()*メソッドを使用してテキストを終了する必要があります。
ステップ9:PDPageContentStreamを閉じる
以下に示すように、* close()メソッドを使用して *PDPageContentStream オブジェクトを閉じます。
ステップ10:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ11:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
この例は、ドキュメントのページにコンテンツを追加する方法を示しています。 ここでは、パス C:/PdfBox_Examples/ に保存されている my_doc.pdf という名前のPDFドキュメントをロードするJavaプログラムを作成し、それにテキストを追加します。 このコードを AddingContent.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは指定されたテキストをドキュメントに追加し、次のメッセージを表示します。
指定されたパスでPDFドキュメント new.pdf を検証すると、以下に示すように、指定されたコンテンツがドキュメントに追加されていることがわかります。
PDFBox-複数行の追加
前の章の例では、PDFのページにテキストを追加する方法について説明しましたが、このプログラムでは、1行に収まるテキストのみを追加できます。 さらにコンテンツを追加しようとすると、行スペースを超えるテキストはすべて表示されません。
たとえば、前の章で上記のプログラムを実行し、次の文字列を渡すと、その一部のみが表示されます。
前の章の例の string text を上記の文字列に置き換えて実行します。 実行すると、次の出力が表示されます。
出力を注意深く観察すると、文字列の一部のみが表示されていることがわかります。
PDFに複数の行を追加するには、* setLeading()メソッドを使用して行送りを設定し、各行の終了後に newline()*メソッドを使用して新しい行にシフトする必要があります。
ステップ
以下は、空のドキュメントを作成し、そのページにコンテンツを追加する手順です。
ステップ1:既存のドキュメントの読み込み
PDDocumentクラスの* load()*メソッドを使用して、既存のドキュメントをロードできます。 したがって、このクラスをインスタンス化し、以下に示すように必要なドキュメントをロードします。
ステップ2:必要なページを取得する
- getPage()*メソッドを使用して、ドキュメント内の必要なページを取得できます。 以下に示すように、このメソッドにインデックスを渡すことにより、必要なページのオブジェクトを取得します。
ステップ3:コンテンツストリームの準備
ステップ4:テキストの開始
PDFドキュメントにテキストを挿入するときに、以下に示すように、 PDPageContentStream クラスの* beginText()および endText()*メソッドを使用して、テキストの開始点と終了点を指定できます。
したがって、以下に示すように* beginText()*メソッドを使用してテキストを開始します。
ステップ5:テキストの位置を設定する
- newLineAtOffset()*メソッドを使用して、ページ内のコンテンツストリームの位置を設定できます。
ステップ6:フォントの設定
フォントのタイプとサイズを渡す必要があるこのメソッドに以下に示すように、 PDPageContentStream クラスの* setFont()*メソッドを使用して、テキストのフォントを必要なスタイルに設定できます。
ステップ7:テキストの先頭を設定する
以下に示すように、* setLeading()*メソッドを使用してテキストの先頭を設定できます。
ステップ8:newline()を使用して複数の文字列を挿入する
ステップ9:テキストの終了
テキストを挿入した後、以下に示すように、 PDPageContentStream クラスの* endText()*メソッドを使用してテキストを終了する必要があります。
ステップ10:PDPageContentStreamを閉じる
以下に示すように、* close()メソッドを使用して *PDPageContentStream オブジェクトを閉じます。
ステップ11:ドキュメントの保存
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ12:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
この例は、PDFBoxを使用してPDFに複数の行を追加する方法を示しています。 このプログラムを* AddMultipleLines.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは指定されたテキストをドキュメントに追加し、次のメッセージを表示します。
指定したパスでPDFドキュメント new.pdf を検証すると、以下に示すように、指定されたコンテンツが複数行でドキュメントに追加されていることがわかります。
PDFBox-テキストを読む
前の章では、既存のPDFドキュメントにテキストを追加する方法を見てきました。 この章では、既存のPDFドキュメントからテキストを読み取る方法について説明します。
既存のPDFドキュメントからテキストを抽出する
テキストの抽出は、PDFボックスライブラリの主な機能の1つです。 PDFTextStripper クラスの* getText()*メソッドを使用してテキストを抽出できます。 このクラスは、指定されたPDFドキュメントからすべてのテキストを抽出します。
以下は、既存のPDFドキュメントからテキストを抽出する手順です。
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:PDFTextStripperクラスをインスタンス化する
ステップ3:テキストを取得する
ステップ4:ドキュメントを閉じる
最後に、以下に示すようにPDDocumentクラスの* close()*メソッドを使用してドキュメントを閉じます。
例
以下に示すように、テキストを含むPDFドキュメントがあるとします。
この例は、上記のPDF文書からテキストを読み取る方法を示しています。 ここでは、Javaプログラムを作成し、パス C:/PdfBox_Examples/ に保存されている new.pdf という名前のPDFドキュメントをロードします。 このコードを ReadingText.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは、指定されたPDFドキュメントからテキストを取得し、以下に示すように表示します。
PDFBox-画像の挿入
前の章では、既存のPDFドキュメントからテキストを抽出する方法を見てきました。 この章では、PDFドキュメントに画像を挿入する方法について説明します。
PDFドキュメントへの画像の挿入
クラス PDImageXObject および PDPageContentStream の* createFromFile()および drawImage()*メソッドをそれぞれ使用して、PDFドキュメントに画像を挿入できます。
以下は、既存のPDFドキュメントからテキストを抽出する手順です。
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:ページを取得する
以下に示すように、PDFドキュメント内のページを選択し、* getPage()*メソッドを使用してそのページオブジェクトを取得します。
ステップ3:PDImageXObjectオブジェクトを作成する
PDFBoxライブラリの PDImageXObject クラスは画像を表します。 画像の挿入、高さの設定、幅の設定など、画像に関連する操作を実行するために必要なすべてのメソッドを提供します。
メソッド* createFromFile()*を使用して、このクラスのオブジェクトを作成できます。 このメソッドには、文字列の形式で追加する画像のパスと、画像を追加する必要があるドキュメントオブジェクトを渡す必要があります。
ステップ4:コンテンツストリームの準備
ステップ5:PDFドキュメントに画像を描画する
- drawImage()*メソッドを使用して、PDFドキュメントに画像を挿入できます。 このメソッドには、上記の手順で作成した画像オブジェクトと、以下に示すように画像の必要な寸法(幅と高さ)を追加する必要があります。
ステップ6:PDPageContentStreamを閉じる
以下に示すように、* close()メソッドを使用して *PDPageContentStream オブジェクトを閉じます。
ステップ7:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ8:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
パス C:/PdfBox_Examples/ に sample.pdf という名前のPDFドキュメントがあり、以下に示すように空のページがあるとします。
この例は、上記のPDFドキュメントの空白ページに画像を追加する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントをロードし、それに画像を追加します。 このコードを* InsertingImage.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは、指定されたPDFドキュメントの指定されたページに画像を挿入し、次のメッセージを表示します。
ドキュメント sample.pdf を検証すると、下に示すように画像が挿入されていることがわかります。
PDFBox-PDFドキュメントの暗号化
前の章で、PDF文書に画像を挿入する方法を見てきました。 この章では、PDFドキュメントを暗号化する方法について説明します。
PDFドキュメントの暗号化
ドキュメントを印刷する
ドキュメントの内容を変更します
ドキュメントのコンテンツをコピーまたは抽出する
注釈を追加または変更する
インタラクティブフォームフィールドに入力する
視覚障害者がアクセスできるようにテキストとグラフィックを抽出する
ドキュメントを組み立てる
品質の低下した印刷
以下は、既存のPDFドキュメントを暗号化する手順です。
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:アクセス許可オブジェクトの作成
以下に示すように、 AccessPermission クラスをインスタンス化します。
ステップ3:StandardProtectionPolicyオブジェクトの作成
以下に示すように、所有者パスワード、ユーザーパスワード、および AccessPermission オブジェクトを渡すことにより、 StandardProtectionPolicy クラスをインスタンス化します。
ステップ4:暗号化キーの長さを設定する
以下に示すように、* setEncryptionKeyLength()*メソッドを使用して暗号化キーの長さを設定します。
ステップ5:許可の設定
StandardProtectionPolicyクラスの* setPermissions()メソッドを使用して権限を設定します。 このメソッドは、パラメーターとして *AccessPermission オブジェクトを受け入れます。
ステップ6:文書の保護
以下に示すように、 PDDocument クラスの* protect()メソッドを使用してドキュメントを保護できます。 *StandardProtectionPolicy オブジェクトをパラメーターとしてこのメソッドに渡します。
ステップ7:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ8:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
以下に示すように、 sample.pdf という名前のPDFドキュメントが C:/PdfBox_Examples/ というパスにあり、空のページがあるとします。
この例は、上記のPDFドキュメントを暗号化する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントを読み込み、暗号化します。 このコードを* EncriptingPDF.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行すると、上記のプログラムは指定されたPDFドキュメントを暗号化し、次のメッセージを表示します。
ドキュメント sample.pdf を開こうとすると、暗号化されているため、できません。 代わりに、次のようにパスワードを入力してドキュメントを開くように求められます。
PDFBox-PDFドキュメントのJavaScript
前の章では、PDFドキュメントに画像を挿入する方法を学びました。 この章では、PDFドキュメントにJavaScriptを追加する方法について説明します。
JavaScriptをPDFドキュメントに追加する
JavaScriptアクションを既存のPDFドキュメントに追加する手順は次のとおりです。
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:PDActionJavaScriptオブジェクトの作成
以下に示すように、 PDActionJavaScript オブジェクトをインスタンス化します。 このクラスのコンストラクターに、以下に示すように、必要なJavaScriptをStringの形式で渡します。
ステップ3:ドキュメントにJavaスクリプトを埋め込む
以下に示すように、必要な文字列をPDFドキュメントに埋め込みます。
ステップ4:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
ステップ5:ドキュメントを閉じる
最後に、以下に示すように、 PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
以下に示すように、 sample.pdf という名前のPDFドキュメントが C:/PdfBox_Examples/ というパスにあり、空のページがあるとします。
この例は、上記のPDFドキュメントにJavaScriptを埋め込む方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントをロードし、JavaScriptを埋め込みます。 このコードを* AddJavaScript.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行すると、上記のプログラムは、指定されたPDFドキュメントにJavaScriptを埋め込み、次のメッセージを表示します。
ドキュメント new.pdf を開こうとすると、次のような警告メッセージが表示されます。
PDFBox-PDFドキュメントの分割
前の章で、JavaScriptをPDFドキュメントに追加する方法を見てきました。 特定のPDFドキュメントを複数のドキュメントに分割する方法を学びましょう。
PDFドキュメント内のページの分割
Splitterという名前のクラスを使用して、指定されたPDFドキュメントを複数のPDFドキュメントに分割できます。 このクラスは、指定されたPDFドキュメントを他のいくつかのドキュメントに分割するために使用されます。
既存のPDFドキュメントを分割する手順は次のとおりです
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:スプリッタークラスのインスタンス化
ステップ3:PDFドキュメントの分割
このクラスの Splitter クラスの* Split()メソッドを使用して、指定されたドキュメントを分割できます。 このメソッドは、 *PDDocument クラスのオブジェクトをパラメーターとして受け入れます。
- split()*メソッドは、指定されたドキュメントの各ページを個々のドキュメントとして分割し、これらすべてをリストの形式で返します。
ステップ4:イテレーターオブジェクトの作成
文書のリストを走査するには、上記の手順で取得したリストの反復子オブジェクトを取得する必要があります。次に示すように、* listIterator()*メソッドを使用してリストの反復子オブジェクトを取得する必要があります。
ステップ5:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
パス C:\ PdfBox_Examples \ に sample.pdf という名前のPDFドキュメントがあり、このドキュメントに2つのページが含まれているとします。1つのページには画像が含まれ、別のページにはテキストが含まれます。
この例は、上記のPDFドキュメントを分割する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントを2つの異なるドキュメント sample1.pdf と sample2.pdf に分割します。 このコードを* SplitPages.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行すると、上記のプログラムは指定されたPDFドキュメントを暗号化し、次のメッセージを表示します。
指定されたパスを確認すると、以下に示すように、 sample1 および sample2 という名前の複数のPDFが作成されたことを確認できます。
PDFBox-複数のPDFドキュメントの結合
前の章では、与えられたPDFドキュメントを複数のドキュメントに分割する方法を見てきました。 複数のPDFドキュメントを単一のドキュメントとしてマージする方法を学びましょう。
複数のPDFドキュメントの結合
以下は、複数のPDFドキュメントをマージする手順です。
ステップ1:PDFMergerUtilityクラスのインスタンス化
以下に示すように、マージユーティリティクラスをインスタンス化します。
ステップ2:宛先ファイルの設定
以下に示すように、setDestinationFileName()メソッドを使用して宛先ファイルを設定します。
ステップ3:ソースファイルの設定
以下に示すように、addSource()メソッドを使用してソースファイルを設定します。
ステップ4:文書の結合
以下に示すように、PDFmergerクラスのmergeDocuments()メソッドを使用してドキュメントをマージします。
例
以下に示すように、パス C:\ PdfBox_Examples \ に sample1.pdf と sample2.pdf の2つのPDFドキュメントがあるとします。
Image File.jpg Content File.jpg
この例は、上記のPDFドキュメントをマージする方法を示しています。 ここでは、 sample1.pdf および sample2.pdf という名前のPDFドキュメントを単一のPDFドキュメント merged.pdf にマージします。 このコードを* MergePDFs.java。*という名前のファイルに保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行すると、上記のプログラムは指定されたPDFドキュメントを暗号化し、次のメッセージを表示します。
指定されたパスを確認すると、 merged.pdf という名前のPDFドキュメントが作成され、これに以下に示すように両方のソースドキュメントのページが含まれていることがわかります。
PDFBox-画像の抽出
前の章では、複数のPDF文書をマージする方法を見てきました。 この章では、PDFドキュメントのページから画像を抽出する方法を理解します。
PDFドキュメントから画像を生成する
PDFBoxライブラリは、PDFドキュメントをAWT BufferedImageにレンダリングする PDFRenderer という名前のクラスを提供します。
以下は、PDFドキュメントから画像を生成する手順です。
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:PDFRendererクラスのインスタンス化
ステップ3:PDFドキュメントから画像をレンダリングする
Rendererクラスの* renderImage()*メソッドを使用して特定のページに画像をレンダリングできます。このメソッドに、レンダリングする画像があるページのインデックスを渡す必要があります。
ステップ4:イメージをファイルに書き込む
- write()*メソッドを使用して、前のステップでレンダリングされたイメージをファイルに書き込むことができます。 この方法に、あなたは3つのパラメータを渡す必要があります-
- レンダリングされた画像オブジェクト。
- 画像のタイプ(jpgまたはpng)を表す文字列。
- 抽出した画像を保存する必要があるファイルオブジェクト。
ステップ5:ドキュメントを閉じる
最後に、以下に示すようにPDDocumentクラスの* close()*メソッドを使用してドキュメントを閉じます。
例
パス C:\ PdfBox_Examples \ に sample.pdf のPDFドキュメントがあり、最初のページに次のように画像が含まれているとします。
この例では、上記のPDFドキュメントを画像ファイルに変換する方法を示します。 ここでは、PDFドキュメントの1ページ目の画像を取得し、 myimage.jpg として保存します。 このコードを PdfToImage.java として保存します
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは、指定されたPDFドキュメント内の画像を取得し、次のメッセージを表示します。
指定されたパスを検証すると、以下に示すように、画像が myimage.jpg として生成および保存されていることがわかります。
PDFBox-四角形の追加
この章では、PDFドキュメントのページにカラーボックスを作成する方法を説明します。
PDFドキュメントでのボックスの作成
以下は、PDFドキュメントのページに長方形の形状を作成する手順です。
ステップ1:既存のPDFドキュメントの読み込み
ステップ2:ページオブジェクトの取得
ステップ3:コンテンツストリームの準備
ステップ4:ストロークなしの色を設定する
クラス PDPageContentStream の* setNonStrokingColor()*メソッドを使用して、非ストローク色を長方形に設定できます。 このメソッドには、以下に示すように、必要な色をパラメーターとして渡す必要があります。
ステップ5:長方形を描く
- addRect()*メソッドを使用して、必要な寸法で長方形を描きます。 このメソッドには、以下に示すように追加する長方形の寸法を渡す必要があります。
ステップ6:四角形を塗りつぶす
ステップ7:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
例
パス C:\ PdfBox_Examples \ に blankpage.pdf という名前のPDFドキュメントがあり、以下に示すように単一の空白ページが含まれているとします。
この例では、PDFドキュメントで長方形を作成/挿入する方法を示します。 ここでは、空のPDFにボックスを作成します。 このコードを AddRectangles.java として保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムはPDFドキュメントに次の画像を表示する長方形を作成します。
指定されたパスを確認し、保存されたドキュメント( colorbox.pdf )を開くと、以下に示すようにボックスが挿入されていることがわかります。