Pdfbox-quick-guide

提供:Dev Guides
移動先:案内検索

PDFBox-概要

Portable Document Format(PDF)は、アプリケーションソフトウェア、ハードウェア、およびオペレーティングシステムに依存しない方法でデータを表示するのに役立つファイル形式です。

各PDFファイルには、テキスト、フォント、グラフィックス、および表示に必要なその他の情報を含む、固定レイアウトのフラットドキュメントの説明が含まれています。

次のようなプログラムを介してPDFドキュメントを作成および操作するために利用できるいくつかのライブラリがあります-

  • Adob​​e 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 *-上記のリンクをクリックすると、次のスクリーンショットに示すようにホームページが表示されます-

PDFBoxホームページ

  • ステップ3 *-次に、上記のスクリーンショットで強調表示されている*ダウンロード*リンクをクリックします。 クリックすると、次のスクリーンショットに示すように、PDFBoxのダウンロードページに移動します。

PDFBox Downloads.jpg

ステップ4 *-ダウンロードページに、PDFBoxのリンクがあります。 最新リリースの各リンクをクリックします。 たとえば、 *PDFBox 2.0.1 を選択しています。これをクリックすると、次のスクリーンショットに示すように、必要なjarファイルが表示されます。

PDFBox Jarfiles.jpg

  • ステップ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を開き、[ファイル]、[新規]の順にクリックして、新しいプロジェクトを開きます。

Eclipseファイルメニュー

  • ステップ3 *-プロジェクトを選択すると、*新しいプロジェクト*ウィザードが表示されます。 このウィザードで、Javaプロジェクトを選択し、次のスクリーンショットに示すように[次へ]ボタンをクリックして続行します。

Eclipse Newprojectウィザード

  • ステップ4 *-先に進むと、*新しいJavaプロジェクトウィザード*に移動します。 次のスクリーンショットに示すように、新しいプロジェクトを作成し、[次へ]をクリックします。

プロジェクト作成ウィザード

ステップ5 *-新しいプロジェクトを作成した後、それを右クリックします。次のスクリーンショットに示すように、 *Build Path を選択し、* Configure Build Path…*をクリックします。

Eclipseビルドパス

ステップ6 *-*ビルドパス*オプションをクリックすると、 Javaビルドパスウィザード*が表示されます。 次のスクリーンショットに示すように、 Add External JARs を選択します。

Eclipse 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

Jarファイルの場所

  • ステップ8 *-上記のスクリーンショットの*開く*ボタンをクリックすると、次のスクリーンショットに示すように、これらのファイルがライブラリに追加されます。

Jarファイルが追加されました

ステップ9 *- *OK をクリックすると、必要なJARファイルが現在のプロジェクトに正常に追加され、次のスクリーンショットに示すように、参照ライブラリを展開してこれらの追加ライブラリを確認できます。

Eclipse 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ドキュメントを見つけることができます。

保存したマイドキュメント

これは空のドキュメントであるため、このドキュメントを開こうとすると、次のスクリーンショットに示すようにエラーメッセージを表示するプロンプトが表示されます。

空の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ドキュメントのドキュメントプロパティテーブルのスクリーンショットです。

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の例

この例は、上記の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 を開こうとすると、次のような警告メッセージが表示されます。

javascriptの追加

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.pdfsample2.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が作成されたことを確認できます。

最初に分割 2番目に分割

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.pdfsample2.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 として生成および保存されていることがわかります。

Generateimage

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 )を開くと、以下に示すようにボックスが挿入されていることがわかります。

Coloredbox