はじめに
このクイック記事では、人気のiTextとPdfBoxライブラリに基づいてゼロからPDF文書を作成することに焦点を当てることにします。
Maven 依存関係
私たちのプロジェクトに含める必要がある Maven 依存関係を見てみましょう。 Bounty Castle Provider パッケージは、暗号化アルゴリズムの実装を含み、両方のライブラリで必要とされます。 Bounty Castle Provider.
Overview
iText と PdfBox はどちらも、PDF ファイルの作成/操作に使用される Java ライブラリです。 ライブラリの最終的な出力は同じですが、それらは少し異なる方法で動作します。
Create Pdf in IText
4.1. Pdf にテキストを挿入する
「Hello World」というテキストを含む新しいファイルを pdf ファイルに挿入する方法を見てみましょう
iTextライブラリを使用してPDFを作成するには、 DocumentのElementsインタフェース(バージョン 5.5.10 では45個の実装があります)のオブジェクトを操作することに基づいています。
ドキュメントに追加して使用できる最小の要素は Chunk と呼ばれ、基本的にはフォントを適用した文字列です。
さらに、Chunk は Paragraphs や Section などの他の要素と組み合わせることができ、美しいドキュメントになります。 画像の挿入
iTextライブラリは、ドキュメントに画像を追加する簡単な方法を提供します。 単にイメージのインスタンスを作成し、それをドキュメントに追加する必要があります。 表を挿入する
私たちは、PDFに表を追加したいときに問題に直面することがあります。
最初にしなければならないことは、PdfTable オブジェクトを作成し、コンストラクタでテーブルの列数を指定することです。 iText は必要なすべてのセルが定義されている限り、テーブルの行を作成します。つまり、いったん 3 列のテーブルを作成し、そこに 8 つのセルを追加すると、それぞれ 3 つのセルを持つ 2 行のみが表示されるということです。 最初の行は、背景色とボーダーの幅を変更したテーブル ヘッダーとして扱います。
2 行目は、テキストだけの 3 つのセルで構成され、余分な書式設定はありません。 さらに、各セルは個別に書式設定されるかもしれません。以下に示す例では、水平および垂直方向の配置調整を適用しています。 ファイルの暗号化
iText ライブラリを使用して許可を適用するには、すでに作成した PDF 文書が必要です。 この例では、以前に作成した iTextHelloWorld.pdf ファイルを使用します。
PdfReader を使用してファイルを読み込んだら、メタデータや暗号化など、ファイルに追加のコンテンツを適用するために使用する PdfStamper を作成する必要があります。 ユーザー パスワード (“userpass”)は、ユーザーが読み取り専用で印刷はできないようにし、オーナー パスワード (“ownerpass”) は、その人が pdf に完全にアクセスできるようにするマスター キーとして使用します。
ユーザーに pdf の印刷を許可したい場合、0 (setEncryption の 3 番目のパラメーター) の代わりに次のように渡すことができます:
PdfWriter.ALLOW_PRINTING
もちろん、次のように異なる権限を混ぜることもできます:
PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_COPY
アクセス権限を設定するために iText を使用して、削除すべき一時 PDF も作成し、もし削除しなければ、誰でも完全にアクセスできてしまうことを心に留めて置いておいてください。
PdfBox
で PDF を作成する
5.1. Pdfにテキストを挿入する
iTextとは反対に、PdfBoxライブラリはストリーム操作に基づいたAPIを提供します。 Chunk/Paragraph などのクラスはありません。 PDDocument クラスはインメモリ Pdf 表現で、ユーザーは PDPageContentStream クラスを操作してデータを書き込みます。
コード例を見てみましょう。 画像の挿入
画像の挿入は簡単です。
まず、ファイルをロードして PDImageXObject を作成し、ドキュメントにそれを描きます (正確な x,y 座標を指定する必要があります)。 テーブルを挿入する
残念ながら、PdfBox はテーブルを作成するためのアウトオブボックスのメソッドを提供しません。 そのような状況で私たちができることは、手動でそれを描くことです。文字通り、私たちが夢見ている表に似ているまで、それぞれの線を描きます。 ファイルの暗号化
PdfBox ライブラリは、暗号化およびユーザーによるファイル権限の調整を行うことができます。 iText と比較して、単に PDDocument を使用するため、既存のファイルを使用する必要はありません。 Pdf ファイルの権限は AccessPermission クラスで処理され、ユーザーがファイルの変更、コンテンツの抽出、印刷ができるかどうかを設定できます。
続いて、ドキュメントにパスワード ベースの保護を追加する StandardProtectionPolicy オブジェクトを作成します。 パスワードには 2 種類を指定できます。 ユーザーパスワード、その後に適用されたアクセス権限でファイルを開くことができる人、およびオーナーパスワード (ファイルへの制限なし):
この例では、ユーザーがユーザーパスワードを提供すると、ファイルを変更および印刷できない状況を提示しています。
Conclusions
このチュートリアルでは、2 つの人気のある Java ライブラリで pdf ファイルを作成する方法を説明しました。
GitHub 上の Maven ベース プロジェクトで完全な例を見ることができます。
Learn Spring コースで Spring 5 と Spring Boot 2 を始める:
>> CHECK OUT THE COURSE