請允許我將您的問題分解爲兩個不同的問題。
問題1:您正在創建一個Font
對象,你在setFieldProperty()
方法使用該對象。
這是錯誤的。 setFieldProperty()
方法只接受BaseFont
對象作爲字體。這解釋了ClassCastException
:你不能投Font
到BaseFont
。
這是你將怎樣解決這個:
BaseFont bf = BaseFont.createFont(BaseFont.COURIER_BOLD, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
fields.setFieldProperty(字段名,ApplicationConstants.TEXT_FONT,BF,NULL);
問題2:您想填寫一個正常的文本字段併爲添加的文本加下劃線。
如果您閱讀ISO-32000-1,您會發現這不受支持。
子問題a:「下劃線」不是字體的屬性(也不是顏色)。這是爲了您的方便而添加到iText的Font
類中的東西(就像顏色一樣)。
子問題b: PDF規範沒有定義將文本強調爲文本字段的任何標誌。
如果它真的您的要求,強調文本添加到一個領域,你的選擇是:
- 獲取字段的位置,並添加使用
ColumnText
文本。這只是一個選項,如果它是可以接受的扁平化的形式。如果填寫的表單需要保持互動,請使用其他方法。
- 將該字段定義爲Rich Text字段。請參閱PDF參考以瞭解有關此類字段的更多信息。如果你選擇這個選項,你可能會自己做。您可以在StackOverflow上發佈另一個問題,但任何人都很難回答。
- 構建您自己的
/DA
。這不是因爲心臟不好。這將需要PDF和iText的良好洞察力。如果你沒有這種洞察力,任何人都可以在你的位置做這件事的機會非常小。另外:如果表單不平坦,只要有人點擊交互式字段,文本下方的行就會消失,因爲子問題b。 (換句話說:選項3大概是不是的一個好主意。)
感謝布魯諾,增加了'ColumnText'。 –