【问题标题】:Python - create a multi-layered PDFPython - 创建多层 PDF
【发布时间】:2015-12-04 21:40:22
【问题描述】:

有没有办法使用 Python 创建多层 PDF。但不合并。

我认为多层 PDF 意味着页面中有多个层,我可以选择要在 Acrobat 中显示的层。

这是我找到的关于分层 PDF 的文档: http://www.open.ac.uk/opencetl/files/opencetl/file/ecms/web-content/Multi-pdf-how-to-%20file.pdf

还有一个分层 PDF 的例子: http://www.talkgraphics.com/attachment.php?s=1901864ddbe7b63f672440daffc3907e&attachmentid=76844&d=1285324919

【问题讨论】:

  • 首先在多层 PDF 上记录自己并与我们分享这些信息。
  • @DirkHorsten 我添加了一个关于多层 PDF 的文档。谢谢!

标签: python pdf reportlab pypdf adobe-pdf-library


【解决方案1】:

您可以使用PyPDF2 覆盖不同 PDF 文件的页面,生成另一个未拼合的 PDF 文件。

您可以找到添加水印here 的好示例。查看“覆盖页面”部分中的示例和说明。

【讨论】:

  • 该示例在我复制时产生单层输出
【解决方案2】:

据我所知,Reportlab 和 Pypdf 都没有机制来创建实现层(或可选内容组)所需的标记内容块。

我使用 IronPython 和 Datalogics .Net 接口创建了这样的 APDFL。 还有一个 Java 接口,因此您可以使用 Jython 执行相同的操作。

该技术基本上是为图层创建一个 OptionalContentGroup,然后将图层中所需的内容添加到容器中,并将容器的 OptionalContentMembershipDict 设置为连接两者的 OptionalContentMemberDict。

ocg = PDFL.OptionalContentGroup(doc,"Labels")
doc.DefaultOptionalContentConfig.Order.Insert(0,PDFL.OptionalContentOrderLeaf(ocg))
labelContainer.OptionalContentMembershipDict = PDFL.OptionalContentMembershipDict(doc,[ocg,],PDFL.VisibilityPolicy.AnyOn)

其中 labelContainer 是我添加到页面内容中的容器元素。

披露:我为 Datalogics 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2021-11-30
    • 2021-10-18
    • 2013-05-24
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多