Pdfbox-adding-text

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

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 を検証すると、以下に示すように、指定されたコンテンツがドキュメントに追加されていることがわかります。

テキストの追加