itext7を使用してpdfの絶対位置にテキストを挿入する方法を尋ねられましたか?過去数日間、私は関連情報も確認し、関連するアプリケーションのシナリオとソリューションについて説明しました。
アプリケーションシナリオ
実際、pdfの絶対位置にテキストを挿入するためのアプリケーションシナリオはまだたくさんあります。最も一般的なアプリケーションシナリオは次のとおりです。
- 契約テンプレートはPDFを使用
- 契約書のほとんどのテキストは書かれており、名前、ID番号など、コンテンツのごく一部がユーザーによって入力されています。
- 記入する内容の絶対位置を決定しました。このとき、当社Webページ等の端末は、ユーザーが記入した内容を受け取り、内容に応じてPDF内の対応する位置に記入します。
これは典型的なアプリケーションシナリオです。実際、この操作を使用する必要がある場所はまだたくさんあります。この操作を実現する方法を見てみましょう。
方法1:setFixedPosition-高度なAPI
最も簡単な方法は、Paragraph
オブジェクトのsetFixedPosition
メソッドを使用することです。このメソッドは継承されたcom.itextpdf.layout.ElementPropertyContainer
メソッドです。メソッドのプロトタイプは次のとおりです。
関数プロトタイプ:
public T setFixedPosition(int pageNumber、float left、
float bottom、
UnitValue width)
パラメータ:
- pageNumber:絶対位置のページ番号を設定します
- 左:原点を基準にした、追加されたテキストの左下隅のx座標
- 下:原点を基準にした、追加されたテキストの左下隅のy座標
- width:追加されたテキストの水平方向の幅
コード例:
Text text = new Text(String.format("Page %d", pdf.getNumberOfPages() - 1));
text.setBackgroundColor(Color.WHITE);
//前面这个text主要是设置背景色为白色,如果text的位置上面有内容就会覆盖掉内容
document.add(new Paragraph(text).setFixedPosition(
pdf.getNumberOfPages(), 549, 742, 100)); //这里面width取决于留空的宽度,这里我们尽量取大一点
動作結果:
幅パラメータの選択
ここでは、widthパラメータの選択に注意する必要があります。幅が小さすぎると、テキストが複数行で表示されます。次の図は、width = 10の場合の効果を示しています。
width = 20の場合、効果は次のとおりです。
方法2:Canvasを使用する-低レベルAPI
このアプローチは、特定の場所にテキストを追加するために使用Rectangle
およびCanvas
結合することです。次のコードを直接確認します。
PdfPage page = pdf.addNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
Rectangle[] columns = {new Rectangle(6, 650, 100, 30),
new Rectangle(50, 500, 100, 100),}; //几个Rectangle对应几个位置
pdfCanvas.rectangle(columns[0]);
pdfCanvas.stroke();
Canvas canvas = new Canvas(pdfCanvas, pdf, columns[0]);
Paragraph p=new Paragraph("hssssas").setFont(f3).setBold().setFontSize(10); //Bold为设置粗体
canvas.add(p);
次のように実行します。
- 契約の残りのスペースに応じて、対応する番号を設計します
Rectangle
- 最初の長方形を使用し
pdfCanvas
て現在のキャンバスの位置を設定し、この長方形にコンテンツを追加することを示します stroke()
関数を呼び出して長方形を表示します。もちろん、この関数を未使用のままにしておくと、長方形は表示されません。pdfCanvas
に基づいてCanvas
インスタンスを作成しますParagraph
オブジェクトを作成し、太字にし、フォントスタイルを設定し、フォントサイズを設定します。- これを
Canvas
追加するにはParagraph
結果を以下に示します。
PS:長方形にコンテンツを追加すると、他の状況が発生します。たとえば、追加されたコンテンツが長方形のサイズを超えています。追加されたコンテンツはどうなりますか?解決策はありますか?最初に自分で試すことができます。この問題については他の章で説明します。