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。*に追加します
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my_project</groupId>
<artifactId>my_project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jempbox</artifactId>
<version>1.8.11</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>preflight</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</project>
PDFBox-PDFドキュメントの作成
PDFBoxライブラリを使用してPDFドキュメントを作成する方法を理解しましょう。
空のPDFドキュメントの作成
*PDDocument* クラスをインスタンス化することにより、空のPDFドキュメントを作成できます。 * Save()*メソッドを使用して、目的の場所にドキュメントを保存できます。
空のPDFドキュメントを作成する手順は次のとおりです。
ステップ1:空のドキュメントを作成する
パッケージ org.apache.pdfbox.pdmodel に属する PDDocument クラスは、PDFDocumentのメモリ内表現です。 したがって、このクラスをインスタンス化することにより、次のコードブロックに示すように空のPDFDocumentを作成できます。
PDDocument document = new PDDocument();
ステップ2:ドキュメントを保存する
ドキュメントを作成したら、このドキュメントを目的のパスに保存する必要があります。 PDDocument クラスの* Save()メソッドを使用して保存できます。 このメソッドは、ドキュメントを保存するパスを表す文字列値をパラメーターとして受け入れます。 以下は、 *PDDocument クラスのsave()メソッドのプロトタイプです。
document.save("Path");
ステップ3:ドキュメントを閉じる
タスクが完了したら、最後に、* close()メソッドを使用して *PDDocument オブジェクトを閉じる必要があります。 以下は、 PDDocument クラスのclose()メソッドのプロトタイプです。
document.close();
例
この例は、PDFドキュメントの作成を示しています。 ここでは、Javaプログラムを作成して、 my_doc.pdf という名前のPDFドキュメントを生成し、パス C:/PdfBox_Examples/ に保存します。 このコードを* Document_Creation.java。*という名前のファイルに保存します
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class Document_Creation {
public static void main (String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac Document_Creation.java
java Document_Creation
実行時に、上記のプログラムは、次のメッセージを表示するPDFドキュメントを作成します。
PDF created
指定されたパスを確認すると、以下に示すように作成されたPDFドキュメントを見つけることができます。
これは空のドキュメントであるため、このドキュメントを開こうとすると、次のスクリーンショットに示すようにエラーメッセージを表示するプロンプトが表示されます。
PDFBox-ページの追加
前の章では、PDFドキュメントを作成する方法を見てきました。 PDFドキュメントを作成したら、ページを追加する必要があります。 PDFドキュメントにページを追加する方法を理解しましょう。
PDFドキュメントへのページの追加
*PDPage* クラスをインスタンス化して空のページを作成し、 *PDDocument* クラスの* addPage()*メソッドを使用してPDFドキュメントに追加できます。
以下は、空のドキュメントを作成してページを追加する手順です。
ステップ1:空のドキュメントを作成する
以下に示すように PDDocument クラスをインスタンス化して、空のPDFドキュメントを作成します。
PDDocument document = new PDDocument();
ステップ2:空白のページを作成する
*PDPage* クラスは *PDF* ドキュメント内のページを表すため、次のコードブロックに示すように、このクラスをインスタンス化することで空のページを作成できます。
PDPage my_page = new PDPage();
ステップ3:ドキュメントにページを追加する
*PDDocument* クラスの* addPage()*メソッドを使用して、PDFドキュメントにページを追加できます。 このメソッドには、PDPageオブジェクトをパラメーターとして渡す必要があります。
したがって、次のコードブロックに示すように、前の手順で作成した空白ページをPDDocumentオブジェクトに追加します。
document.addPage(my_page);
この方法で、PDFドキュメントに必要な数のページを追加できます。
ステップ4:ドキュメントを保存する
すべてのページを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
document.save("Path");
ステップ5:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
この例では、PDFドキュメントを作成してページを追加する方法を示します。 ここでは、 my_doc.pdf という名前のPDFドキュメントを作成し、さらに10の空白ページを追加して、パス C:/PdfBox_Examples/ に保存します。 このコードを* Adding_pages.java。*という名前のファイルに保存します
package document;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class Adding_Pages {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
for (int i=0; i<10; i++) {
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
}
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
javac Adding_pages.java
java Adding_pages
実行時に、上記のプログラムは、次のメッセージを表示する空白ページを含むPDFドキュメントを作成します-
PDF created
指定したパスを確認すると、次のスクリーンショットに示すように、作成されたPDFドキュメントを見つけることができます。
PDFBox-ドキュメントの読み込み
前の例では、新しいドキュメントを作成してページを追加する方法を見てきました。 この章では、システムにすでに存在するPDFドキュメントをロードし、そのドキュメントでいくつかの操作を実行する方法を説明します。
既存のPDFドキュメントの読み込み
*PDDocument* クラスの* load()*メソッドは、既存のPDFドキュメントをロードするために使用されます。 以下の手順に従って、既存のPDFドキュメントを読み込みます。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument.load(file);
ステップ2:必要な操作を実行する
ページの追加、テキストの追加、読み込んだドキュメントへの画像の追加など、必要な操作を実行します。
ステップ3:ドキュメントを保存する
すべてのページを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
document.save("Path");
ステップ4:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
次のスクリーンショットに示すように、パスに C:/PdfBox_Examples/ という単一のページを含むPDFドキュメントがあるとします。
この例は、既存のPDFドキュメントをロードする方法を示しています。 ここでは、上記のPDFドキュメント sample.pdf を読み込み、ページを追加して、同じパスに同じ名前で保存します。
ステップ1 *-このコードを LoadingExistingDocument.java。*という名前のファイルに保存します。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class LoadingExistingDocument {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
System.out.println("PDF loaded");
//Adding a blank page to the document
document.addPage(new PDPage());
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac LoadingExistingDocument.java
java LoadingExistingDocument
実行時に、上記のプログラムは指定されたPDFドキュメントをロードし、次のメッセージを表示する空のページを追加します。
PDF loaded
指定したパスを確認すると、以下に示すように、指定したPDFドキュメントに追加された追加ページを見つけることができます。
PDFBox-ページの削除
PDFドキュメントからページを削除する方法を学びましょう。
既存のドキュメントからページを削除する
*PDDocument* クラスの* removePage()*メソッドを使用して、既存のPDFドキュメントからページを削除できます。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument.load(file);
ステップ2:ページ数のリスト
以下に示すように、* getNumberOfPages()*メソッドを使用して、PDF文書に存在するページ数をリストできます。
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
ステップ3:ページを削除する
*PDDocument* クラスの* removePage()*メソッドを使用して、PDFドキュメントからページを削除できます。 このメソッドには、削除するページのインデックスを渡す必要があります。
PDFドキュメント内のページのインデックスを指定する際、これらのページのインデックスはゼロから始まることに注意してください。つまり、1 ^ st ^ページを削除する場合は、インデックス値を0にする必要があります。
document.removePage(2);
ステップ4:ドキュメントを保存する
ページを削除した後、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
document.save("Path");
ステップ5:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
*sample.pdf* という名前のPDFドキュメントがあり、以下に示すように3つの空のページが含まれているとします。
この例は、既存のPDFドキュメントからページを削除する方法を示しています。 ここでは、 sample.pdf という上記の指定されたPDFドキュメントをロードし、そこからページを削除して、パス C:/PdfBox_Examples/ に保存します。 このコードを Removing_pages.java という名前のファイルに保存します。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class RemovingPages {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Listing the number of existing pages
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
//Removing the pages
document.removePage(2);
System.out.println("page removed");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac RemovingPages.java
java RemovingPages
実行時に、上記のプログラムは、次のメッセージを表示する空白ページを含むPDFドキュメントを作成します。
3
page removed
指定したパスを検証すると、必要なページが削除され、以下に示すようにドキュメントに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 という名前のファイルに保存します。
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;
public class AddingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
//Creating the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Setting the author of the document
pdd.setAuthor("finddevguides");
//Setting the title of the document
pdd.setTitle("Sample document");
//Setting the creator of the document
pdd.setCreator("PDF Examples");
//Setting the subject of the document
pdd.setSubject("Example document");
//Setting the created date of the document
Calendar date = new GregorianCalendar();
date.set(2015, 11, 5);
pdd.setCreationDate(date);
//Setting the modified date of the document
date.set(2016, 6, 5);
pdd.setModificationDate(date);
//Setting keywords for the document
pdd.setKeywords("sample, first example, my pdf");
//Saving the document
document.save("C:/PdfBox_Examples/doc_attributes.pdf");
System.out.println("Properties added successfully ");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac AddingAttributes.java
java AddingAttributes
上記のプログラムは、実行時に、指定されたすべての属性を次のメッセージを表示するドキュメントに追加します。
Properties added successfully
これで、指定されたパスにアクセスすると、そのパスで作成されたPDFを見つけることができます。 ドキュメントを右クリックして、下に示すようにドキュメントプロパティオプションを選択します。
これにより、ドキュメントプロパティウィンドウが表示され、ここで、ドキュメントのすべてのプロパティが指定された値に設定されていることを確認できます。
ドキュメントプロパティの取得
*PDDocumentInformation* クラスによって提供される *getter* メソッドを使用して、ドキュメントのプロパティを取得できます。
以下は 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 という名前のファイルに保存します。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
public class RetrivingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/doc_attributes.pdf")
PDDocument document = PDDocument.load(file);
//Getting the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Retrieving the info of a PDF document
System.out.println("Author of the document is :"+ pdd.getAuthor());
System.out.println("Title of the document is :"+ pdd.getTitle());
System.out.println("Subject of the document is :"+ pdd.getSubject());
System.out.println("Creator of the document is :"+ pdd.getCreator());
System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
System.out.println("Modification date of the document is :"+
pdd.getModificationDate());
System.out.println("Keywords of the document are :"+ pdd.getKeywords());
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac RetrivingDocumentAttributes.java
java RetrivingDocumentAttributes
実行すると、上記のプログラムはドキュメントのすべての属性を取得し、次のように表示します。
Author of the document is :finddevguides
Title of the document is :Sample document
Subject of the document is :Example document
Creator of the document is :PDF Examples
Creation date of the document is :11/5/2015
Modification date of the document is :6/5/2016
Keywords of the document are :sample, first example, my pdf
PDFBox-テキストの追加
前の章では、PDFドキュメントにページを追加する方法について説明しました。 この章では、既存のPDFドキュメントにテキストを追加する方法について説明します。
既存のPDFドキュメントへのテキストの追加
PDFBoxライブラリを使用してドキュメントにコンテンツを追加できます。これにより、PDFDocumentのページにテキスト、画像、その他のタイプのコンテンツを挿入するために必要なメソッドを含むPDPageContentStreamというクラスが提供されます。
以下は、空のドキュメントを作成し、そのページにコンテンツを追加する手順です。
ステップ1:既存のドキュメントの読み込み
PDDocumentクラスの* load()*メソッドを使用して、既存のドキュメントをロードできます。 したがって、このクラスをインスタンス化し、以下に示すように必要なドキュメントをロードします。
File file = new File("Path of the document");
PDDocument doc = document.load(file);
ステップ2:必要なページを取得する
- getPage()*メソッドを使用して、ドキュメント内の必要なページを取得できます。 以下に示すように、このメソッドにインデックスを渡すことにより、必要なページのオブジェクトを取得します。
PDPage page = doc.getPage(1);
ステップ3:コンテンツストリームの準備
クラス PDPageContentStream のオブジェクトを使用して、さまざまな種類のデータ要素を挿入できます。 したがって、ドキュメントオブジェクトとページオブジェクトをこのクラスのコンストラクターに渡す必要があります。以下に示すように、前の手順で作成したこれら2つのオブジェクトを渡すことにより、このクラスをインスタンス化します。
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
ステップ4:テキストの開始
PDFドキュメントにテキストを挿入するときに、以下に示すようにPDPageContentStreamクラスのbeginText()およびendText()メソッドを使用して、テキストの開始点と終了点を指定できます。
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
したがって、以下に示すように* beginText()*メソッドを使用してテキストを開始します。
contentStream.beginText();
ステップ5:テキストの位置を設定する
- newLineAtOffset()*メソッドを使用して、ページ内のコンテンツストリームの位置を設定できます。
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
ステップ6:フォントの設定
以下に示すように、 PDPageContentStream クラスの* setFont()*メソッドを使用して、テキストのフォントを必要なスタイルに設定できます。 このメソッドには、フォントのタイプとサイズを渡す必要があります。
contentStream.setFont( font_type, font_size );
ステップ7:テキストの挿入
以下に示すように、 PDPageContentStream クラスの* ShowText()*メソッドを使用して、ページにテキストを挿入できます。 このメソッドは、文字列の形式で必要なテキストを受け入れます。
contentStream.showText(text);
ステップ8:テキストの終了
テキストを挿入した後、以下に示すように、 PDPageContentStream クラスの* endText()*メソッドを使用してテキストを終了する必要があります。
contentStream.endText();
ステップ9:PDPageContentStreamを閉じる
以下に示すように、* close()メソッドを使用して *PDPageContentStream オブジェクトを閉じます。
contentstream.close();
ステップ10:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
doc.save("Path");
ステップ11:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
doc.close();
例
この例は、ドキュメントのページにコンテンツを追加する方法を示しています。 ここでは、パス C:/PdfBox_Examples/ に保存されている my_doc.pdf という名前のPDFドキュメントをロードするJavaプログラムを作成し、それにテキストを追加します。 このコードを AddingContent.java という名前のファイルに保存します。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddingContent {
public static void main (String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/my_doc.pdf");
PDDocument document = PDDocument.load(file);
//Retrieving the pages of the document
PDPage page = document.getPage(1);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);
//Setting the position for the line
contentStream.newLineAtOffset(25, 500);
String text = "This is the sample document and we are adding content to it.";
//Adding text in the form of string
contentStream.showText(text);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
document.save(new File("C:/PdfBox_Examples/new.pdf"));
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac AddingContent.java
java AddingContent
実行時に、上記のプログラムは指定されたテキストをドキュメントに追加し、次のメッセージを表示します。
Content added
指定されたパスでPDFドキュメント new.pdf を検証すると、以下に示すように、指定されたコンテンツがドキュメントに追加されていることがわかります。
PDFBox-複数行の追加
前の章の例では、PDFのページにテキストを追加する方法について説明しましたが、このプログラムでは、1行に収まるテキストのみを追加できます。 さらにコンテンツを追加しようとすると、行スペースを超えるテキストはすべて表示されません。
たとえば、前の章で上記のプログラムを実行し、次の文字列を渡すと、その一部のみが表示されます。
String text = "This is an example of adding text to a page in the pdf document. we can
add as many lines as we want like this using the showText() method of the
ContentStream class";
前の章の例の string text を上記の文字列に置き換えて実行します。 実行すると、次の出力が表示されます。
出力を注意深く観察すると、文字列の一部のみが表示されていることがわかります。
PDFに複数の行を追加するには、* setLeading()メソッドを使用して行送りを設定し、各行の終了後に newline()*メソッドを使用して新しい行にシフトする必要があります。
ステップ
以下は、空のドキュメントを作成し、そのページにコンテンツを追加する手順です。
ステップ1:既存のドキュメントの読み込み
PDDocumentクラスの* load()*メソッドを使用して、既存のドキュメントをロードできます。 したがって、このクラスをインスタンス化し、以下に示すように必要なドキュメントをロードします。
File file = new File("Path of the document");
PDDocument doc = PDDocument.load(file);
ステップ2:必要なページを取得する
- getPage()*メソッドを使用して、ドキュメント内の必要なページを取得できます。 以下に示すように、このメソッドにインデックスを渡すことにより、必要なページのオブジェクトを取得します。
PDPage page = doc.getPage(1);
ステップ3:コンテンツストリームの準備
*PDPageContentStream* という名前のクラスのオブジェクトを使用して、さまざまな種類のデータ要素を挿入できます。 したがって、ドキュメントオブジェクトとページオブジェクトをこのクラスのコンストラクターに渡す必要があります。以下に示すように、前の手順で作成したこれら2つのオブジェクトを渡すことにより、このクラスをインスタンス化します。
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
ステップ4:テキストの開始
PDFドキュメントにテキストを挿入するときに、以下に示すように、 PDPageContentStream クラスの* beginText()および endText()*メソッドを使用して、テキストの開始点と終了点を指定できます。
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
したがって、以下に示すように* beginText()*メソッドを使用してテキストを開始します。
contentStream.beginText();
ステップ5:テキストの位置を設定する
- newLineAtOffset()*メソッドを使用して、ページ内のコンテンツストリームの位置を設定できます。
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
ステップ6:フォントの設定
フォントのタイプとサイズを渡す必要があるこのメソッドに以下に示すように、 PDPageContentStream クラスの* setFont()*メソッドを使用して、テキストのフォントを必要なスタイルに設定できます。
contentStream.setFont( font_type, font_size );
ステップ7:テキストの先頭を設定する
以下に示すように、* setLeading()*メソッドを使用してテキストの先頭を設定できます。
contentStream.setLeading(14.5f);
ステップ8:newline()を使用して複数の文字列を挿入する
*PDPageContentStream* クラスの* ShowText()*メソッドを使用して複数の文字列を挿入するには、以下に示すように* newline()*メソッドを使用して各文字列を分割します。
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
ステップ9:テキストの終了
テキストを挿入した後、以下に示すように、 PDPageContentStream クラスの* endText()*メソッドを使用してテキストを終了する必要があります。
contentStream.endText();
ステップ10:PDPageContentStreamを閉じる
以下に示すように、* close()メソッドを使用して *PDPageContentStream オブジェクトを閉じます。
contentstream.close();
ステップ11:ドキュメントの保存
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
doc.save("Path");
ステップ12:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
doc.close();
例
この例は、PDFBoxを使用してPDFに複数の行を追加する方法を示しています。 このプログラムを* AddMultipleLines.java。*という名前のファイルに保存します
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddMultipleLines {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/my_pdf.pdf");
PDDocument doc = document.load(file);
//Creating a PDF Document
PDPage page = doc.getPage(1);
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
//Setting the leading
contentStream.setLeading(14.5f);
//Setting the position for the line
contentStream.newLineAtOffset(25, 725);
String text1 = "This is an example of adding text to a page in the pdf document.
we can add as many lines";
String text2 = "as we want like this using the ShowText() method of the
ContentStream class";
//Adding text in the form of string
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
doc.save(new File("C:/PdfBox_Examples/new.pdf"));
//Closing the document
doc.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac AddMultipleLines.java
java AddMultipleLines
実行時に、上記のプログラムは指定されたテキストをドキュメントに追加し、次のメッセージを表示します。
Content added
指定したパスでPDFドキュメント new.pdf を検証すると、以下に示すように、指定されたコンテンツが複数行でドキュメントに追加されていることがわかります。
PDFBox-テキストを読む
前の章では、既存のPDFドキュメントにテキストを追加する方法を見てきました。 この章では、既存のPDFドキュメントからテキストを読み取る方法について説明します。
既存のPDFドキュメントからテキストを抽出する
テキストの抽出は、PDFボックスライブラリの主な機能の1つです。 PDFTextStripper クラスの* getText()*メソッドを使用してテキストを抽出できます。 このクラスは、指定されたPDFドキュメントからすべてのテキストを抽出します。
以下は、既存のPDFドキュメントからテキストを抽出する手順です。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
ステップ2:PDFTextStripperクラスをインスタンス化する
*PDFTextStripper* クラスは、PDFドキュメントからテキストを取得するメソッドを提供します。したがって、以下に示すようにこのクラスをインスタンス化します。
PDFTextStripper pdfStripper = new PDFTextStripper();
ステップ3:テキストを取得する
*PDFTextStripper* クラスの* getText()*メソッドを使用して、PDFドキュメントからページのコンテンツを読み取り/取得できます。 このメソッドには、ドキュメントオブジェクトをパラメーターとして渡す必要があります。 このメソッドは、指定されたドキュメント内のテキストを取得し、Stringオブジェクトの形式で返します。
String text = pdfStripper.getText(document);
ステップ4:ドキュメントを閉じる
最後に、以下に示すようにPDDocumentクラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
以下に示すように、テキストを含むPDFドキュメントがあるとします。
この例は、上記のPDF文書からテキストを読み取る方法を示しています。 ここでは、Javaプログラムを作成し、パス C:/PdfBox_Examples/ に保存されている new.pdf という名前のPDFドキュメントをロードします。 このコードを ReadingText.java という名前のファイルに保存します。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class ReadingText {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
//Instantiate PDFTextStripper class
PDFTextStripper pdfStripper = new PDFTextStripper();
//Retrieving text from PDF document
String text = pdfStripper.getText(document);
System.out.println(text);
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac ReadingText.java
java ReadingText
実行時に、上記のプログラムは、指定されたPDFドキュメントからテキストを取得し、以下に示すように表示します。
This is an example of adding text to a page in the pdf document. we can add as many lines
as we want like this using the ShowText() method of the ContentStream class.
PDFBox-画像の挿入
前の章では、既存のPDFドキュメントからテキストを抽出する方法を見てきました。 この章では、PDFドキュメントに画像を挿入する方法について説明します。
PDFドキュメントへの画像の挿入
クラス PDImageXObject および PDPageContentStream の* createFromFile()および drawImage()*メソッドをそれぞれ使用して、PDFドキュメントに画像を挿入できます。
以下は、既存のPDFドキュメントからテキストを抽出する手順です。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);
ステップ2:ページを取得する
以下に示すように、PDFドキュメント内のページを選択し、* getPage()*メソッドを使用してそのページオブジェクトを取得します。
PDPage page = doc.getPage(0);
ステップ3:PDImageXObjectオブジェクトを作成する
PDFBoxライブラリの PDImageXObject クラスは画像を表します。 画像の挿入、高さの設定、幅の設定など、画像に関連する操作を実行するために必要なすべてのメソッドを提供します。
メソッド* createFromFile()*を使用して、このクラスのオブジェクトを作成できます。 このメソッドには、文字列の形式で追加する画像のパスと、画像を追加する必要があるドキュメントオブジェクトを渡す必要があります。
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);
ステップ4:コンテンツストリームの準備
*PDPageContentStream* という名前のクラスのオブジェクトを使用して、さまざまな種類のデータ要素を挿入できます。 したがって、ドキュメントオブジェクトとページオブジェクトをこのクラスのコンストラクターに渡す必要があります。以下に示すように、前の手順で作成したこれら2つのオブジェクトを渡すことにより、このクラスをインスタンス化します。
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
ステップ5:PDFドキュメントに画像を描画する
- drawImage()*メソッドを使用して、PDFドキュメントに画像を挿入できます。 このメソッドには、上記の手順で作成した画像オブジェクトと、以下に示すように画像の必要な寸法(幅と高さ)を追加する必要があります。
contentstream.drawImage(pdImage, 70, 250);
ステップ6:PDPageContentStreamを閉じる
以下に示すように、* close()メソッドを使用して *PDPageContentStream オブジェクトを閉じます。
contentstream.close();
ステップ7:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
doc.save("Path");
ステップ8:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
doc.close();
例
パス C:/PdfBox_Examples/ に sample.pdf という名前のPDFドキュメントがあり、以下に示すように空のページがあるとします。
この例は、上記のPDFドキュメントの空白ページに画像を追加する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントをロードし、それに画像を追加します。 このコードを* InsertingImage.java。*という名前のファイルに保存します
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class InsertingImage {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(0);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 70, 250);
System.out.println("Image inserted");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
doc.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac InsertingImage.java
java InsertingImage
実行時に、上記のプログラムは、指定されたPDFドキュメントの指定されたページに画像を挿入し、次のメッセージを表示します。
Image inserted
ドキュメント sample.pdf を検証すると、下に示すように画像が挿入されていることがわかります。
PDFBox-PDFドキュメントの暗号化
前の章で、PDF文書に画像を挿入する方法を見てきました。 この章では、PDFドキュメントを暗号化する方法について説明します。
PDFドキュメントの暗号化
*StandardProtectionPolicy* および* AccessPermissionクラス*が提供するメソッドを使用して、PDFドキュメントを暗号化できます。
*AccessPermission* クラスは、アクセス許可を割り当てることによりPDFドキュメントを保護するために使用されます。 このクラスを使用すると、ユーザーが次の操作を実行できないように制限できます。
ドキュメントを印刷する
ドキュメントの内容を変更します
ドキュメントのコンテンツをコピーまたは抽出する
注釈を追加または変更する
インタラクティブフォームフィールドに入力する
視覚障害者がアクセスできるようにテキストとグラフィックを抽出する
ドキュメントを組み立てる
品質の低下した印刷
*StandardProtectionPolicy* クラスは、パスワードベースの保護をドキュメントに追加するために使用されます。
以下は、既存のPDFドキュメントを暗号化する手順です。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
ステップ2:アクセス許可オブジェクトの作成
以下に示すように、 AccessPermission クラスをインスタンス化します。
AccessPermission accessPermission = new AccessPermission();
ステップ3:StandardProtectionPolicyオブジェクトの作成
以下に示すように、所有者パスワード、ユーザーパスワード、および AccessPermission オブジェクトを渡すことにより、 StandardProtectionPolicy クラスをインスタンス化します。
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);
ステップ4:暗号化キーの長さを設定する
以下に示すように、* setEncryptionKeyLength()*メソッドを使用して暗号化キーの長さを設定します。
spp.setEncryptionKeyLength(128);
ステップ5:許可の設定
StandardProtectionPolicyクラスの* setPermissions()メソッドを使用して権限を設定します。 このメソッドは、パラメーターとして *AccessPermission オブジェクトを受け入れます。
spp.setPermissions(accessPermission);
ステップ6:文書の保護
以下に示すように、 PDDocument クラスの* protect()メソッドを使用してドキュメントを保護できます。 *StandardProtectionPolicy オブジェクトをパラメーターとしてこのメソッドに渡します。
document.protect(spp);
ステップ7:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
document.save("Path");
ステップ8:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
以下に示すように、 sample.pdf という名前のPDFドキュメントが C:/PdfBox_Examples/ というパスにあり、空のページがあるとします。
この例は、上記のPDFドキュメントを暗号化する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントを読み込み、暗号化します。 このコードを* EncriptingPDF.java。*という名前のファイルに保存します
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac EncriptingPDF.java
java EncriptingPDF
実行すると、上記のプログラムは指定されたPDFドキュメントを暗号化し、次のメッセージを表示します。
Document encrypted
ドキュメント sample.pdf を開こうとすると、暗号化されているため、できません。 代わりに、次のようにパスワードを入力してドキュメントを開くように求められます。
PDFBox-PDFドキュメントのJavaScript
前の章では、PDFドキュメントに画像を挿入する方法を学びました。 この章では、PDFドキュメントにJavaScriptを追加する方法について説明します。
JavaScriptをPDFドキュメントに追加する
*PDActionJavaScript* クラスを使用して、PDFドキュメントにJavaScriptアクションを追加できます。 これはJavaScriptアクションを表します。
JavaScriptアクションを既存のPDFドキュメントに追加する手順は次のとおりです。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
ステップ2:PDActionJavaScriptオブジェクトの作成
以下に示すように、 PDActionJavaScript オブジェクトをインスタンス化します。 このクラスのコンストラクターに、以下に示すように、必要なJavaScriptをStringの形式で渡します。
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0,cTitle: 'PDFBox Javascript example' } );";
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
ステップ3:ドキュメントにJavaスクリプトを埋め込む
以下に示すように、必要な文字列をPDFドキュメントに埋め込みます。
document.getDocumentCatalog().setOpenAction(PDAjavascript);
ステップ4:ドキュメントを保存する
必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。
document.save("Path");
ステップ5:ドキュメントを閉じる
最後に、以下に示すように、 PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
以下に示すように、 sample.pdf という名前のPDFドキュメントが C:/PdfBox_Examples/ というパスにあり、空のページがあるとします。
この例は、上記のPDFドキュメントにJavaScriptを埋め込む方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントをロードし、JavaScriptを埋め込みます。 このコードを* AddJavaScript.java。*という名前のファイルに保存します
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;
public class AddJavaScript {
public static void main(String args[]) throws Exception {
//Loading an existing file
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0, cTitle: 'PDFBox Javascript example’} );";
//Creating PDActionJavaScript object
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
//Embedding java script
document.getDocumentCatalog().setOpenAction(PDAjavascript);
//Saving the document
document.save( new File("C:/PdfBox_Examples/new.pdf") );
System.out.println("Data added to the given PDF");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac AddJavaScript.java
java AddJavaScript
実行すると、上記のプログラムは、指定されたPDFドキュメントにJavaScriptを埋め込み、次のメッセージを表示します。
Data added to the given PDF
ドキュメント new.pdf を開こうとすると、次のような警告メッセージが表示されます。
PDFBox-PDFドキュメントの分割
前の章で、JavaScriptをPDFドキュメントに追加する方法を見てきました。 特定のPDFドキュメントを複数のドキュメントに分割する方法を学びましょう。
PDFドキュメント内のページの分割
Splitterという名前のクラスを使用して、指定されたPDFドキュメントを複数のPDFドキュメントに分割できます。 このクラスは、指定されたPDFドキュメントを他のいくつかのドキュメントに分割するために使用されます。
既存のPDFドキュメントを分割する手順は次のとおりです
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
ステップ2:スプリッタークラスのインスタンス化
*Splitter* という名前のクラスには、指定されたPDFドキュメントを分割するメソッドが含まれているため、以下に示すようにこのクラスをインスタンス化します。
Splitter splitter = new Splitter();
ステップ3:PDFドキュメントの分割
このクラスの Splitter クラスの* Split()メソッドを使用して、指定されたドキュメントを分割できます。 このメソッドは、 *PDDocument クラスのオブジェクトをパラメーターとして受け入れます。
List<PDDocument> Pages = splitter.split(document);
- split()*メソッドは、指定されたドキュメントの各ページを個々のドキュメントとして分割し、これらすべてをリストの形式で返します。
ステップ4:イテレーターオブジェクトの作成
文書のリストを走査するには、上記の手順で取得したリストの反復子オブジェクトを取得する必要があります。次に示すように、* listIterator()*メソッドを使用してリストの反復子オブジェクトを取得する必要があります。
Iterator<PDDocument> iterator = Pages.listIterator();
ステップ5:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
パス C:\ PdfBox_Examples \ に sample.pdf という名前のPDFドキュメントがあり、このドキュメントに2つのページが含まれているとします。1つのページには画像が含まれ、別のページにはテキストが含まれます。
この例は、上記のPDFドキュメントを分割する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントを2つの異なるドキュメント sample1.pdf と sample2.pdf に分割します。 このコードを* SplitPages.java。*という名前のファイルに保存します
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
public class SplitPages {
public static void main(String[] args) throws IOException {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating Splitter class
Splitter splitter = new Splitter();
//splitting the pages of a PDF document
List<PDDocument> Pages = splitter.split(document);
//Creating an iterator
Iterator<PDDocument> iterator = Pages.listIterator();
//Saving each page as an individual document
int i = 1;
while(iterator.hasNext()) {
PDDocument pd = iterator.next();
pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
}
System.out.println("Multiple PDF’s created");
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac SplitPages.java
java SplitPages
実行すると、上記のプログラムは指定されたPDFドキュメントを暗号化し、次のメッセージを表示します。
Multiple PDF’s created
指定されたパスを確認すると、以下に示すように、 sample1 および sample2 という名前の複数のPDFが作成されたことを確認できます。
PDFBox-複数のPDFドキュメントの結合
前の章では、与えられたPDFドキュメントを複数のドキュメントに分割する方法を見てきました。 複数のPDFドキュメントを単一のドキュメントとしてマージする方法を学びましょう。
複数のPDFドキュメントの結合
*PDFMergerUtility* クラスという名前のクラスを使用して、複数のPDFドキュメントを単一のPDFドキュメントにマージできます。このクラスは、2つ以上のPDFドキュメントを単一のPDFドキュメントにマージするメソッドを提供します。
以下は、複数のPDFドキュメントをマージする手順です。
ステップ1:PDFMergerUtilityクラスのインスタンス化
以下に示すように、マージユーティリティクラスをインスタンス化します。
PDFMergerUtility PDFmerger = new PDFMergerUtility();
ステップ2:宛先ファイルの設定
以下に示すように、setDestinationFileName()メソッドを使用して宛先ファイルを設定します。
PDFmerger.setDestinationFileName("C:/PdfBox_Examples/data1/merged.pdf");
ステップ3:ソースファイルの設定
以下に示すように、addSource()メソッドを使用してソースファイルを設定します。
File file = new File("path of the document")
PDFmerger.addSource(file);
ステップ4:文書の結合
以下に示すように、PDFmergerクラスのmergeDocuments()メソッドを使用してドキュメントをマージします。
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。*という名前のファイルに保存します
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.File;
import java.io.IOException;
public class MergePDFs {
public static void main(String[] args) throws IOException {
File file1 = new File("C:\\EXAMPLES\\Demo1.pdf");
File file2 = new File("C:\\EXAMPLES\\Demo2.pdf");
//Instantiating PDFMergerUtility class
PDFMergerUtility PDFmerger = new PDFMergerUtility();
//Setting the destination file
PDFmerger.setDestinationFileName("C:\\Examples\\merged.pdf");
//adding the source files
PDFmerger.addSource(file1);
PDFmerger.addSource(file2);
//Merging the two documents
PDFmerger.mergeDocuments();
System.out.println("Documents merged");
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac MergePDFs.java
java MergePDFs
実行すると、上記のプログラムは指定されたPDFドキュメントを暗号化し、次のメッセージを表示します。
Documents merged
指定されたパスを確認すると、 merged.pdf という名前のPDFドキュメントが作成され、これに以下に示すように両方のソースドキュメントのページが含まれていることがわかります。
PDFBox-画像の抽出
前の章では、複数のPDF文書をマージする方法を見てきました。 この章では、PDFドキュメントのページから画像を抽出する方法を理解します。
PDFドキュメントから画像を生成する
PDFBoxライブラリは、PDFドキュメントをAWT BufferedImageにレンダリングする PDFRenderer という名前のクラスを提供します。
以下は、PDFドキュメントから画像を生成する手順です。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
ステップ2:PDFRendererクラスのインスタンス化
*PDFRenderer* という名前のクラスは、PDFドキュメントを *AWT BufferedImage* にレンダリングします。 したがって、次のようにこのクラスをインスタンス化する必要があります。 このクラスのコンストラクターは、ドキュメントオブジェクトを受け入れます。以下に示すように、前の手順で作成したドキュメントオブジェクトを渡します。
PDFRenderer renderer = new PDFRenderer(document);
ステップ3:PDFドキュメントから画像をレンダリングする
Rendererクラスの* renderImage()*メソッドを使用して特定のページに画像をレンダリングできます。このメソッドに、レンダリングする画像があるページのインデックスを渡す必要があります。
BufferedImage image = renderer.renderImage(0);
ステップ4:イメージをファイルに書き込む
- write()*メソッドを使用して、前のステップでレンダリングされたイメージをファイルに書き込むことができます。 この方法に、あなたは3つのパラメータを渡す必要があります-
- レンダリングされた画像オブジェクト。
- 画像のタイプ(jpgまたはpng)を表す文字列。
- 抽出した画像を保存する必要があるファイルオブジェクト。
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
ステップ5:ドキュメントを閉じる
最後に、以下に示すようにPDDocumentクラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
パス C:\ PdfBox_Examples \ に sample.pdf のPDFドキュメントがあり、最初のページに次のように画像が含まれているとします。
この例では、上記のPDFドキュメントを画像ファイルに変換する方法を示します。 ここでは、PDFドキュメントの1ページ目の画像を取得し、 myimage.jpg として保存します。 このコードを PdfToImage.java として保存します
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {
public static void main(String args[]) throws Exception {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating the PDFRenderer class
PDFRenderer renderer = new PDFRenderer(document);
//Rendering an image from the PDF document
BufferedImage image = renderer.renderImage(0);
//Writing the image to a file
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
System.out.println("Image created");
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac PdfToImage.java
java PdfToImage
実行時に、上記のプログラムは、指定されたPDFドキュメント内の画像を取得し、次のメッセージを表示します。
Image created
指定されたパスを検証すると、以下に示すように、画像が myimage.jpg として生成および保存されていることがわかります。
PDFBox-四角形の追加
この章では、PDFドキュメントのページにカラーボックスを作成する方法を説明します。
PDFドキュメントでのボックスの作成
*PDPageContentStream* クラスの* addRect()*メソッドを使用して、PDFページに長方形のボックスを追加できます。
以下は、PDFドキュメントのページに長方形の形状を作成する手順です。
ステップ1:既存のPDFドキュメントの読み込み
*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
ステップ2:ページオブジェクトの取得
*PDDocument* クラスの* getPage()*メソッドを使用して、長方形を追加する必要なページの *PDPage* オブジェクトを取得する必要があります。 このメソッドには、長方形を追加するページのインデックスを渡す必要があります。
PDPage page = document.getPage(0);
ステップ3:コンテンツストリームの準備
*PDPageContentStream* という名前のクラスのオブジェクトを使用して、さまざまな種類のデータ要素を挿入できます。 したがって、ドキュメントオブジェクトとページオブジェクトをこのクラスのコンストラクターに渡す必要があります。以下に示すように、前の手順で作成したこれら2つのオブジェクトを渡すことにより、このクラスをインスタンス化します。
PDPageContentStream contentStream = new PDPageContentStream(document, page);
ステップ4:ストロークなしの色を設定する
クラス PDPageContentStream の* setNonStrokingColor()*メソッドを使用して、非ストローク色を長方形に設定できます。 このメソッドには、以下に示すように、必要な色をパラメーターとして渡す必要があります。
contentStream.setNonStrokingColor(Color.DARK_GRAY);
ステップ5:長方形を描く
- addRect()*メソッドを使用して、必要な寸法で長方形を描きます。 このメソッドには、以下に示すように追加する長方形の寸法を渡す必要があります。
contentStream.addRect(200, 650, 100, 100);
ステップ6:四角形を塗りつぶす
*PDPageContentStream* クラスの* fill()*メソッドは、以下に示すように、指定されたディメンション間のパスを必要な色で塗りつぶします。
contentStream.fill();
ステップ7:ドキュメントを閉じる
最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。
document.close();
例
パス C:\ PdfBox_Examples \ に blankpage.pdf という名前のPDFドキュメントがあり、以下に示すように単一の空白ページが含まれているとします。
この例では、PDFドキュメントで長方形を作成/挿入する方法を示します。 ここでは、空のPDFにボックスを作成します。 このコードを AddRectangles.java として保存します。
import java.awt.Color;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
public class ShowColorBoxes {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/BlankPage.pdf");
PDDocument document = PDDocument.load(file);
//Retrieving a page of the PDF Document
PDPage page = document.getPage(0);
//Instantiating the PDPageContentStream class
PDPageContentStream contentStream = new PDPageContentStream(document, page);
//Setting the non stroking color
contentStream.setNonStrokingColor(Color.DARK_GRAY);
//Drawing a rectangle
contentStream.addRect(200, 650, 100, 100);
//Drawing a rectangle
contentStream.fill();
System.out.println("rectangle added");
//Closing the ContentStream object
contentStream.close();
//Saving the document
File file1 = new File("C:/PdfBox_Examples/colorbox.pdf");
document.save(file1);
//Closing the document
document.close();
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
javac AddRectangles.java
java AddRectangles
実行時に、上記のプログラムはPDFドキュメントに次の画像を表示する長方形を作成します。
Rectangle created
指定されたパスを確認し、保存されたドキュメント( colorbox.pdf )を開くと、以下に示すようにボックスが挿入されていることがわかります。