【问题标题】:itextpdf : merge pdf filesitextpdf : 合并pdf文件
【发布时间】:2015-10-08 15:43:38
【问题描述】:

itextpdf 是否可以像这样合并两个 pdf 文件

  1. pdf-file-1:1 页,3 行文字

  2. pdf-file-2:1 页,9 行文字

结果:

pdf-file-3:1页12行文字,合并pdf-file-1pdf-file-2的结果

【问题讨论】:

  • 不,问这个的人不明白 PDF 的内容是使用坐标添加到页面的。您将 PDF 误认为是文字处理格式。这不是 iText 的限制。这是 PDF 的限制。
  • 好的,谢谢。我没想到这个
  • 如果要让它发挥作用,请查看this answer

标签: java itext itextpdf


【解决方案1】:

itextpdf 是否可以像这样合并两个 pdf 文件...

正如布鲁诺在他的评论中解释的那样,PDF 通常几乎不知道它们显示的文本,它们不知道章节、部分、段落、列等。它们甚至不一定知道文本行;我们认为的一条线可能是在一些抽象坐标处绘制的小块文本的松散集合。

因此,从相关 PDF 的内部来看,您的问题甚至可能没有意义。

如果你重新表述它,一些类似的问题确实有意义,例如

iTextPdf 是否可以像这样合并两个 pdf 文件

  1. pdf-file-1: 1 页,其内容仅占页面的一小部分,例如只有上半部分

  2. pdf-file-2: 1 页也包含仅占页面一小部分的内容,例如只有上半部分

结果:

pdf-file-3: pdf-file-1 的内容在顶部,pdf-file-2 的内容在其下方的 1 页,合并 pdf-file-1 和 pdf-file-2 的结果

这确实是可能的,尤其是使用 iText 是可能的。虽然此功能不是 iText 的显式功能,但 iText 确实提供了一个低级 API,可以相当容易地实现此类合并功能,例如:

  • this answer 中的PdfDenseMergeTool 完全按照上面的描述进行,它将尽可能多的源页面的内容放在目标页面上;和
  • this answer 中的 PdfVeryDenseMergeTool 做得更多,它甚至可以拆分源页面内容以将更多内容挤到目标页面上。

但请注意,这些类并没有经过多年的使用和改进而得到强化,它们只是概念证明,某些极端情况仍需要考虑。

特别是他们只考虑实际的页面内容,而不是注释或类似的活动内容。另一方面,他们甚至将在空白页面上绘制的白色矩形视为内容。尽管实际可见,但每页最初都用白色填充的 PDF 被认为是完全填满的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2021-12-27
    • 2013-04-02
    • 2021-07-05
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多