Pdfbox-adding-multiple-lines

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

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

複数行の追加