You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用iText5 Java生成的PDF表单域上传至Adobe Sign出现重复问题

iText5生成PDF上传Adobe Sign后表单域重复问题

问题现象

代码生成下载的带表单域的PDF文件
Adobe Sign工具重复生成表单域的截图
使用iText5库为PDF创建日期域与签名域并生成PDF文件。下载后的PDF在Adobe Acrobat Reader中打开仅能看到1个已创建的域,但将该PDF上传至Adobe Sign时,表单域会出现重复现象。

原实现代码如下:

Document document = new Document(PageSize.A4,40,40,60,50);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document,baos);

PdfPTable signatureTable = createPdfTable(2);
signatureTable.setWidths(new int[] {1,1});
PdfPCell signatureCell = new PdfPCell();

TextField signatureText = new TextField(writer,signatureCell,"TCSig1_es_:signer1:signature");
signatureText.setBackgroundColor(BaseColor.WHITE);

PdfFormField signField = signatureText.getTextField();
signField.setPlaceInPage(4);
FieldPositioningEvents signatureEvent = new FieldPositioningEvents(writer, signField);
signatureCell.setCellEvent(signatureEvent);
signatureTable.addCell(signatureCell);

document.add(signatureTable);

问题原因

FieldPositioningEvents事件本身会在单元格渲染到对应页面时,自动将绑定的表单域添加到PDF的AcroForm集合中并设置正确坐标。额外调用signField.setPlaceInPage(4)相当于手动将同一个表单域重复添加到了第4页,Adobe Acrobat Reader会自动合并同名表单域所以仅显示1个,但Adobe Sign的表单域解析逻辑不会合并同名域,因此会识别出两个重复的表单域。

解决方法

删除signField.setPlaceInPage(4);这行代码即可,表单域的位置和所属页面会由FieldPositioningEvents自动处理。

修正后的代码:

Document document = new Document(PageSize.A4,40,40,60,50);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document,baos);

PdfPTable signatureTable = createPdfTable(2);
signatureTable.setWidths(new int[] {1,1});
PdfPCell signatureCell = new PdfPCell();

TextField signatureText = new TextField(writer,signatureCell,"TCSig1_es_:signer1:signature");
signatureText.setBackgroundColor(BaseColor.WHITE);

PdfFormField signField = signatureText.getTextField();
FieldPositioningEvents signatureEvent = new FieldPositioningEvents(writer, signField);
signatureCell.setCellEvent(signatureEvent);
signatureTable.addCell(signatureCell);

document.add(signatureTable);

内容的提问来源于stack exchange,提问作者Charu Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:18:04