【问题标题】:iText 5.1.2 does not flatten text boxesiText 5.1.2 不会展平文本框
【发布时间】:2018-02-08 09:40:17
【问题描述】:

我正在使用 iText 5.1.2 - 导入以这种方式创建的 pdf -

  • 在 Adob​​e 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


【解决方案1】:

将 setAnnotationFlatning 设置为 true 将解决文本框展平问题。

stamper.setAnnotationFlatning(true)

【讨论】:

  • 它被其他用户概述,5.1.2版本是古老的,不支持注释展平。也有人提到,这个问题是指无论如何都不应该通过这种方法解决的问题。如果您觉得有必要回答这样一个老问题,请考虑到这一点并提供一些背景信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 2010-11-02
  • 2021-09-18
相关资源
最近更新 更多