【发布时间】:2019-03-04 17:28:22
【问题描述】:
我有一个来自 acroform 的字段,我看到了 field.setValue() 和 field.setRichTextValue(...)。第一个设置了正确的值,但第二个似乎不起作用,富文本值不显示。
这是我使用的代码:
PDDocument pdfDocument = PDDocument.load(new File(SRC));
pdfDocument.getDocument().setIsXRefStream(true);
PDAcroForm acroForm = pdfDocument.getDocumentCatalog().getAcroForm();
acroForm.setNeedAppearances(false);
acroForm.getField("tenantDataValue").setValue("Deuxième texte");
acroForm.getField("tradingAddressValue").setValue("Text replacé");
acroForm.getField("buildingDataValue").setValue("Deuxième texte");
acroForm.getField("oldRentValue").setValue("750");
acroForm.getField("oldChargesValue").setValue("655");
acroForm.getField("newRentValue").setValue("415");
acroForm.getField("newChargesValue").setValue("358");
acroForm.getField("increaseEffectiveDateValue").setValue("Texte 3eme contenu");
// THIS RICH TEXT NOT SHOW ANYTHING
PDTextField field = (PDTextField) acroForm.getField("tableData");
field.setRichText(true);
String val = "\\rtpara[size=12]{para1}{This is 12pt font, while \\span{size=8}{this is 8pt font.} OK?}";
field.setRichTextValue(val);
我希望将名为“tableData”的字段设置为富文本值!
您可以使用此代码下载我使用的 PDF 表单:download pdf form 您可以在运行此代码后下载输出并展平表单数据download output here
【问题讨论】:
-
“不起作用”是什么意思?什么都没有发生(应该发生什么?)、崩溃、异常、死机、PC 关机、核爆炸,或者您是否以时间循环结束?
-
啊哈哈@TilmanHausherr nop 什么都没发生...我不知道它需要如何工作?我正在尝试在 pdf 输出上设置基本字符串值,关于它的工作方式和 qhat 被称为富文本值的任何文档都没有改变,谢谢您的回复
-
请分享您的PDF;您能否澄清一下“在 pdf 输出上没有任何关于它的工作方式和 qhat 被称为富文本值的文档”的意思。什么是“pdf 输出” - 使用 Adobe Reader 查看?用别的软件?通常只调用
field.setValue()并设置视觉外观,除非acroForm.getNeedAppearances()为真。另请参阅示例子项目中源代码下载中的许多示例。 -
所以你的问题真的是“但第二个对 Chrome 浏览器没有影响”。 (你为什么不在你的问题中写这个?)所以也许它是一个 pdfium 错误。顺便说一句,您还需要设置富文本标志
setRichText(true)。当您没有 PDF、没有代码、没有详细信息时,很难理解问题。设置该值将告诉“合格阅读器”(Adobe Reader 和其他一些阅读器)如何生成外观流。setRichTextValue()的 javadoc 中甚至对此进行了解释。 -
@bee
\rtpara是 richtext 包中的一个 LaTeX 命令,它在内部创建 PDF 理解的富文本。为此,请查看(惊喜,惊喜!)PDF 规范!例如。 Adobe here 发布的 ISO 32000-1 副本,第 12.7.3.4 节“富文本字符串”。