コードによる PDF 生成にはさまざまな利点があります。リアルタイムデータ、データベースレコード、ユーザー入力などの動的コンテンツを容易に統合するのに役立ちます。この機能は、ユーザーにより優れたカスタマイズと自動化機能を提供し、面倒な手動操作も回避します。この記事では、Spire.PDF for Java を使用して PDF ドキュメントを作成する方法を紹介します。
Spire.PDF for Java をインストールします
まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>9.5.6</version>
</dependency>
</dependencies>
予備知識
Spire.PDF for Java のページ(PdfPageBase クラスで表される)は、クライアント領域と周囲のマージンで構成されています。コンテンツ領域は、ユーザーがさまざまなコンテンツを記述するための領域であり、ページ余白は通常空白のエッジになります。
下図に示すように、ページ上の座標系の原点はクライアント領域の左上隅にあり、x 軸は水平に右に伸び、y 軸は垂直に下に伸びています。クライアント領域に追加するすべての要素は、指定された座標に基づいている必要があります。
さらに、次の表に重要なクラスと方法を示します。これは、以下のコードを理解しやすくするのに役立ちます。
クラスと 方法 | 説明 |
PdfDocument クラス | PDF ドキュメント モデルを表します。 |
PdfPageBase クラス | PDF ドキュメント内のページを表します。 |
PdfSolidBrush クラス | オブジェクトを単色で塗りつぶすブラシを表します。 |
PdfTrueTypeFont クラス | True Typeフォントを表します。 |
PdfStringFormat クラス | アライメント、文字間隔、インデントなどのテキスト書式情報を表します。 |
PdfTextWidget クラス | 複数のページにまたがる機能を持つテキスト領域を表します。 |
PdfTextLayout クラス | テキストのレイアウト情報を表します。 |
PdfDocument.getPages().add() メソッド | PDF ドキュメントにページを追加します。 |
PdfPageBase.getCanvas().drawString() メソッド | 指定したフォントとブラシオブジェクトを使用して、ページ上の指定した位置に文字列を描画します。 |
PdfTextWidget.draw() メソッド | テキストウィジェットをページの指定した位置に描画します。 |
PdfDocument.save() メソッド | ドキュメントを PDF ファイルに保存します。 |
Java で PDF ドキュメントを作成する
Spire.PDF for Java では、PDF ドキュメントにさまざまな要素を追加できます。この記事では、プレーンテキストの PDF ドキュメントを作成する方法について説明します。詳細な手順は次のとおりです。
- PdfDocument オブジェクトを作成します。
- PdfDocument.getPages().add() メソッドを使用してページを追加します。
- ブラシとフォントのオブジェクトを作成します。
- PdfPageBase.getCanvas().drawString() メソッドを使用して、ページの指定された座標で文字列を描画します。
- テキストを保存する PdfTextWidget オブジェクトを作成します。
- PdfTextWidget.draw() メソッドを使用して、ページの指定された位置にテキストのウィジェットを描画します
- PdfDocument.save() メソッドを使用してドキュメントを PDF ファイルに保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.*;
public class CreatePdfDocument {
public static void main(String[] args) throws IOException {
//PdfDocumentオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//ページを追加する
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(35f));
//タイトルのテキストの指定
String titleText = "ライセンス契約";
//Solid Brusheを作成する
PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
//True Typeフォントを作成する
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("Yu Mincho",Font.BOLD,18));
PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("Yu Mincho",Font.PLAIN,12));
//PdfStringFormatクラスによるテキストの配置を設定する
PdfStringFormat format = new PdfStringFormat();
format.setAlignment(PdfTextAlignment.Center);
//ページにタイトルを描画する
page.getCanvas().drawString(titleText, titleFont, titleBrush, new Point2D.Float((float)page.getClientSize().getWidth()/2, 20),format);
//.txtファイルから段落テキストを取得する
String paraText = readFileToString("content.txt");
//段落内容を保存するPdfTextWidgetオブジェクトを作成する
PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);
//段落の内容を配置する長方形を作成する
Rectangle2D.Float rect = new Rectangle2D.Float(0, 50, (float)page.getClientSize().getWidth(),(float)page.getClientSize().getHeight());
//PdfLayoutTypeをPaginateに設定して内容を自動的にページング
PdfTextLayout layout = new PdfTextLayout();
layout.setLayout(PdfLayoutType.Paginate);
//ページに段落テキストを描画する
widget.draw(page, rect, layout);
//ファイルに保存する
doc.saveToFile("output/CreatePdfDocument.pdf");
doc.dispose();
}
//.txtファイルを文字列に変換する
private static String readFileToString(String filepath) throws FileNotFoundException, IOException {
StringBuilder sb = new StringBuilder();
String s ="";
BufferedReader br = new BufferedReader(new FileReader(filepath));
while( (s = br.readLine()) != null) {
sb.append(s + "\n");
}
br.close();
String str = sb.toString();
return str;
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。