Tag: pdf form

如何使用Java PDFBOX api检查PDF格式的复选框

如何使用Java PDFBOX api检查PDF格式的复选框 最初我尝试使用下面的代码,但执行后复选框字段在PDF中是不可见的,但它已被检查..如何避免这种情况或他们实现的方式是错误的? 谁能帮我吗 public void check() throws Exception { PDDocument fdeb = null; fdeb = PDDocument.load( “C:\\Users\\34\\Desktop\\complaintform.pdf” ); PDAcroForm form = fdeb.getDocumentCatalog().getAcroForm(); PDField feld3 = form.getField( “check” ); feld3.setValue(“check”); fdeb.save(“C:\\Users\\34\\Desktop\\complaintform.pdf”); fdeb.close(); } 谢谢

Java PDFBox设置PDF表单中几个字段的自定义字体

我正在使用Apache PDFBox读取可填写的PDF表单并根据一些数据填写字段。 我使用下面的代码(根据其他SO答案的建议)获取默认外观字符串并更改它(如下所示,如果字段名称为“Field1”,我将字体大小从10更改为12。 我如何大胆的领域? 有关/ Helv 10 Tf 0 g排列顺序的任何文件? 我需要设置什么来大胆的领域? 如果我理解正确的话,我可以在开箱即用的PDFBox中使用14种基本字体(双关语无意)。 我想使用一个或多个看起来像Signatures(草书)的字体。 这样做的任何开箱即用的字体? 如果没有,如果我有自己的字体,如何设置要写入PDF的方法? 请注意,下面的代码可以通过填充方法参数的特定“名称”字段中方法参数中传递的特定“值”来正常工作。 谢谢 ! public static void setField(String name, String value ) throws IOException { PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog(); PDAcroForm acroForm = docCatalog.getAcroForm(); PDField field = acroForm.getField( name ); COSDictionary dict = ((PDField)field).getDictionary(); COSString defaultAppearance = (COSString) dict.getDictionaryObject(COSName.DA); if (defaultAppearance != […]

PDFBox 1.8.10:填写并签署PDF会生成无效签名

我在PDF文档中填写(以编程方式)表单(AcroPdf),然后在文档中签名。 我从doc.pdf开始,使用PDFBox的setFields.java示例创建doc_filled.pdf。 然后我签署doc_filled.pdf,使用一些代码创建doc?filled_signed.pdf,基于签名示例并在Acrobat Reader中打开pdf。 输入的Field数据可见,签名面板告诉我 “此签名中包含的格式或信息存在错误(签名字节数组无效)” 到目前为止,我知道: 单独应用的签名代码(即直接创建一些doc_signed.pdf)会创建一个有效的签名 “隐形签名”,可见签名和可见签名存在的问题被添加到现有签名字段中。 问题甚至发生,如果我没有填写表格,但只打开并保存,即: PDDocument doc = PDDocument.load(new File(“doc.pdf”)); doc.save(new File(“doc_filled.pdf”)); doc.close(); 足以打破后来应用的签名代码。 另一方面,如果我使用相同的doc.pdf,在Adobe中手动输入字段的值,则签名代码会生成有效的签名。 我究竟做错了什么? 更新: @mkl要求我提供文件,我正在谈论(我目前没有足够的声誉,将所有文件发布为链接,抱歉给您带来不便): odc.pdf: https ://www.dropbox.com/s/ev8x9q48w5l0hof/doc.pdf ? dl = 0 doc_filled.pdf: https ://www.dropbox.com/s/fxn4gyneizs1zzb/doc_filled.pdf ? dl = 0 doc_filled_signed.pdf: https ://www.dropbox.com/s/xm846sj8f9kiga9/doc_filled_signed.pdf ? dl = 0 doc_filled_and_signed.pdf: https ://www.dropbox.com/s/5jftje6ke87jedr/doc_filled_and_signed.pdf ? dl = 0 最后一个是通过使用一次签署和填写文档来创建的 doc.saveIncremental(); 正如我已经在评论中写的那样 setNeedToBeUpdate(true); […]

将XFA与PDFBox结合使用

我想用PDFBox java库填写PDF表单。 PDF表单是使用Adobe Live Designer创建的,因此它使用XFA格式。 我试图找到有关使用PDFBox填充XFA PDF表单的资源,但到目前为止我还没有运气。 我看到API中有一个PDAcroForm.setXFA方法,但我看不到如何使用它。 您知道是否可以用PDFBox填写PDF表格? 如果是,是否有任何代码示例或教程来实现这一目标? 如果不是,实现这一目标的最佳方案是什么?

PDFBox:如何“压扁”PDF格式?

如何使用PDFBox“展平”PDF格式(删除表单字段但保留字段文本)? 这里回答了同样的问题: 快速执行此操作的方法是从acrofrom中删除字段。 为此,您只需要获取文档目录,然后获取acroform,然后从此acroform中删除所有字段。 图形表示与注释链接并保留在文档中。 所以我写了这段代码: import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentCatalog; import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDField; public class PdfBoxTest { public void test() throws Exception { PDDocument pdDoc = PDDocument.load(new File(“E:\\Form-Test.pdf”)); PDDocumentCatalog pdCatalog = pdDoc.getDocumentCatalog(); PDAcroForm acroForm = pdCatalog.getAcroForm(); if (acroForm == null) { System.out.println(“No form-field –> stop”); return; } @SuppressWarnings(“unchecked”) […]