【问题标题】:inserting an entir pdf into another by raw text manipulation通过原始文本操作将整个 pdf 插入另一个
【发布时间】:2021-05-08 22:43:55
【问题描述】:

我需要将一个 pdf 包含到另一个通过文本操作创建的 pdf 中,而不是通过包。 (特别是,我使用的是 livecode,它非常适合生成我需要的信息,并且可以轻松地进行文本操作)。

添加后,我将添加其他对象(主要是文本,但也包括一些小方块)。

我只需要能够按页面和区域访问包含的pdf,例如第5页的(200,200)到(400,400);我不需要访问它的对象。

仅仅附加到 pdf 并不能完成这项工作,因为我实际上会将多个源 pdf 包含在一个 pdf 输出中。

我希望喜欢简单地使原始 pdf 成为输出 pdf 中的间接对象,然后引用并使用它。特别是,我想避免必须将源 pdf “分解”成组件来构建新的交叉引用表。

这可以吗?还是我需要为每个字典中的每个对象以及对它们的每个引用创建新的绝对引用? (我只需要能够引用区域和页面,而不是实际的对象)。

可以一次性用于转换整个多页 pdf 的东西也是一种可用(但较差)的解决方案。

我发现搜索引擎没有产生可用的结果,因为它们充斥着针对单个产品的解决方案,而不是 pdf 本身。

【问题讨论】:

    标签: pdf text pdf-generation


    【解决方案1】:

    首先,PDF 通常不是文本数据,它们是二进制的。它们可能看起来是文本的,因为它们包含由单词的 ASCII 值构建的标识符,但将它们视为文本,除非一个人的工具非常谨慎,否则肯定会损坏它们。

    但即使我们如此谨慎,除非您的输入 PDF 在内部具有非常简单且相似的结构,否则创建允许合并它们并操作其内容的代码本质上是复杂的,类似于创建通用 PDF 库/包.

    我想简单的把原始pdf做成输出pdf中的间接对象,然后引用使用。

    如果您只需要它们作为未更改的附件,则将它们分别放入一个间接对象中会起作用。但你想改变它们。

    特别是,我希望避免不得不将源 pdf “分解”成组件来构建新的交叉引用表。

    您至少必须解析(“反汇编”)与您要操作的页面相关的对象,添加其操作版本,并为更改的对象添加交叉引用。

    你只提到了交叉引用表。不要忘记,在通用解决方案的情况下,您还必须能够处理交叉引用流和对象流。

    或者我是否需要为每个字典中的每个对象以及对它们的每个引用创建新的绝对引用? (我只需要能够引用区域和页面,而不是实际的对象)。

    如果您真的想将源 PDF 合并到目标文件中,您确实需要对大多数源 PDF 中的对象重新编号。

    如果作为目标,源 PDF 的可移植集合(又名投资组合)就足够了,您可能不需要这样做。在这种情况下,您只需将所需的更改应用到源 PDF(如果您愿意,可以通过增量更新),然后将所有这些经过处理的源合并到一个结果组合中。

    我发现搜索引擎没有产生可用的结果

    最有可能的原因是您低估了 PDF 格式的复杂性。组合和操作任意现有 PDF 通常需要您使用第三方库或自己创建此类库的等效项。

    仅处理现有的 PDF 会更容易一些,将 PDF 合并到一个投资组合中也是如此。尽管如此,即使在这种情况下,您也应该对 PDF 规范进行大量研究。

    将自己限制为字符串操作来实现这一点会使任务变得更加复杂 - 我会说对于通用 PDF 来说是不可能的,敢于使用简单和类似构建的 PDF。

    【讨论】:

    • 谢谢。我花了几天时间消化,这很有帮助。不是我希望,但肯定会从兔子洞中拯救我。我将看看 PyPDF2,看看它对各个部分做了什么。我认为我可以以一种允许我以简单的方式组装的方式自动化转换——如果我可以将我需要的部分变成独立的对象并且只需要担心一个地址,我认为这是可行的。
    • 祝你好运!这不会是微不足道的。
    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 2012-07-14
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多