【发布时间】:2018-02-08 09:40:17
【问题描述】:
我正在使用 iText 5.1.2 - 导入以这种方式创建的 pdf -
- 在 Adobe Reader 中打开任何 pdf
- 转到查看菜单
- 选择填写并签名
- 选择添加文本
- 在页面上的文本框中输入文本
- 保存文件
当我通过以下方法运行该 pdf 时,生成的 pdf 不包括输入到文本框中的文本 -
public static void flatten( File _src, File _dest ) throws DocumentException, IOException {
PdfReader reader = null;
PdfStamper stamper = null;
FileOutputStream fos = null;
try{
fos = new FileOutputStream( _dest );
reader = new PdfReader( _src.getAbsolutePath() );
stamper = new PdfStamper( reader, fos );
stamper.setFormFlattening( true );
stamper.close();
}finally{
if ( reader != null ) reader.close();
if ( fos != null ) try{ fos.close(); }catch( IOException ignored ){}
}
}
我做错了什么?
【问题讨论】:
-
文本框注释不是表单域。因此,表单展平不适用于文本框注释。
-
好的,那我如何确保文本框中的文本传输到另一端的新pdf?如果 setFormFlatning 没有做到这一点,那我还应该做什么呢?
-
您应该从使用当前软件版本开始。 5.1.2 很古老,从那时起进行了许多改进。
-
我认为@mkl 可能是对的。我认为引入了扁平化注释!在某个时候客户的要求之后。你是客户吗?另外:为什么要将注释展平以“将其转移到另一个PDF”?听起来你做错了什么。
-
更像是转换而不是转移。我们获取一个文档,将其展平,然后向其添加页眉和页脚信息。并获取多个文档并将它们拼接在一起。这些文件来自全国许多不同的用户,无论如何都不是标准格式。
标签: java pdf itext adobe flatten