2

PDFのフォームフィールドにデータベース/配列の値を入力するコードをいくつか書きました(これはうまく機能します)。

特定のフォント (理想的には Helvetica または Helvetica Neue) を使用するために、各フォーム フィールドの textfont プロパティを設定できるようにする必要があります。

以下のループは、名前付きの各フォーム フィールドに値が設定されていることを示していますが、setFieldProperty は機能しません。

<cfset BaseFont = objJLoader.create("com.itextpdf.text.pdf.BaseFont") />
<cfset helvNeue = BaseFont.createFont(expandPath('./files/mfm/fonts/HelveticaNeue.ttf'), BaseFont.CP1252, BaseFont.EMBEDDED) />

<cfset pdfForm = pdfStamper.getAcroFields() />

<cfloop collection="#user#" item="key">
    <cfset pdfForm.setField(lcase(key),user[key]) />
    <cfset pdfForm.setFieldProperty(lcase(key), "textfont", helvNeue) />
</cfloop>

コードを実行すると、次のエラーが表示されます。

The setFieldProperty method was not found.

ColdFusion に組み込まれている iText サポートを使用し、JavaLoader を使用して最新の itextpdf-5.4.2.jar ファイルを読み込もうとしました。

私が間違っていること、または問題を解決してsetFieldPropertyを機能させる方法を誰かが見ることができますか?

どうもありがとう

4

1 に答える 1

2

OK、さらに掘り下げた後、次のコードで動作します。

<cfset baseFont     = objJLoader.create("com.itextpdf.text.pdf.BaseFont") />
<cfset helvFont     = BaseFont.createFont(baseFont.HELVETICA, baseFont.CP1252, baseFont.EMBEDDED) />

<cfset pdfForm      = pdfStamper.getAcroFields() />   

<cfloop collection="#user#" item="key">

  <cfset pdfForm.setFieldProperty(lcase(key), "textfont", helvFont, JavaCast("null", " ")) />
  <cfset pdfForm.setField(lcase(key),user[key]) />

</cfloop>

次の 2 点が欠けていました。

  • 以前、サーバーで helvFont の値を .ttf フォントに設定していましたが、うまくいきませんでした。この例では、Helvetica ベースフォントを直接呼び出しています。

  • setFieldProperty メソッドの null 値が Java null にキャストされていることを確認しています。

于 2013-06-13T10:37:42.807 に答える