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

使用iText5为现有PDF每页添加TextField仅首页生效问题求助

问题原因分析
  • 资源关闭语句位置错误:你把pdfStamper.close()和pdfReader.close()的逻辑写在了for循环内部,第一次循环(处理第1页)执行完之后就直接关闭了PDF操作资源,后续页面对应的循环逻辑根本不会执行,所以只有第一页能成功添加TextField。
  • 表单域命名重复:PDF规范要求同一个文档内的表单域名称不能重复,你现在所有页面的TextField都用了同一个名称HiddenText,就算循环逻辑修复,最后也只会有一个域生效。
修复后的代码示例
PdfReader pdfReader = new PdfReader("C:/somename.pdf");
PdfStamper pdfStamper = new PdfStamper(pdfReader,
        new FileOutputStream("C:/somename_output.pdf"));
pdfStamper.setEncryption(false, null, null, ~PdfWriter.ALLOW_COPY);

int pages = pdfReader.getNumberOfPages();
for (int page = 1; page <= pages; page++) {
    // 每个页面的表单域添加唯一名称,避免重复冲突
    TextField field = new TextField(pdfStamper.getWriter(), new Rectangle(400, 1, 612, 10), "HiddenText_" + page);
    field.setBorderColor(BaseColor.CYAN);
    field.setBorderStyle(PdfBorderDictionary.STYLE_DASHED);
    field.setBorderWidth(BaseField.BORDER_WIDTH_MEDIUM);
    field.setText("Adding some text here in each page");
    field.setOptions(TextField.READ_ONLY);
    pdfStamper.addAnnotation(field.getTextField(), page);
}
// 资源关闭逻辑移到for循环外部,所有页面处理完成后再关闭
pdfStamper.close();
pdfReader.close();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:36:05