我在PDFBox中引入“可填写”表单并填写输入字段,然后将这些字段设置为只读。我们正在这样做,因此PDF很容易为我们而不是最终用户填写。
我遇到的问题是当用户在iOS(在某些情况下是Android)中打开PDF时,可填写字段不可见。其他所有东西都还在那里,而不是填写的字段。如果我在任何笔记本电脑/台式机上打开相同的pdf,那么一切都在那里。
我是否因为错误的原因使用了可填写字段,是否有更好的方法可以做到这一点,还是有办法让iOS上的用户可以看到这些字段?
以下是我正在做的事情的一个简单示例:
public PDDocument fillDynamicPDF(form, field, entry){
try{
PDDocument pdDoc = PDDocument.load(new File("form"))
PDDocumentCatalog pdCatalog = pdDoc.getDocumentCatalog()
PDAcroForm acroForm = pdCatalog.getAcroForm()
acroForm.getField(field).setValue(entry)
acroForm.getField(field).setReadonly(true)
return pdDoc
}catch(e){
log.error e
return null
}
}
答案 0 :(得分:0)
在iOS上,它取决于您用于查看PDF文件的应用程序。如果应用程序使用CGPDF API或QuickLook框架,则不会显示字段,因为这些框架无法显示PDF注释(字段使用窗口小部件注释)。
如果您使用Adobe Reader查看文件,则字段是可见的,因为它使用自己的渲染引擎
解决方案是展平表单字段,而不是将它们设置为只读。此操作将字段内容与页面内容合并,无论使用何种应用程序查看文件,它们都将在iOS上可见。