Python -创建多层PDF

sr4lhrrt  于 2023-04-10  发布在  Python
关注(0)|答案(3)|浏览(233)

有没有一种方法可以使用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

e7arh2l6

e7arh2l61#

您可以使用PyPDF2覆盖来自不同PDF文件的页面,生成另一个未拼合的PDF文件。
你可以找到一个添加水印here的好例子。看看“叠加页面”部分的例子和解释。

t3psigkw

t3psigkw2#

据我所知,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工作。

kqlmhetl

kqlmhetl3#

需要查看图层的查看器数量非常少,通常不是PDF/X-4标准,但许多Python编辑器可以修改或添加OCG,但由于复杂性,许多是商业级应用程序,例如基于MuPDF的PyMuPDF。https://pymupdf.readthedocs.io/en/latest/document.html#Document.get_layer
到目前为止
PDF/X-1a和PDF/X-3仍然被广泛用作商业打印机的标准数据交换,它们明确禁止使用OCG(可选内容组,又名层)。
层的缺点是,即使你要产生它们,那么大多数PDF阅读器,包括轻量级Adobe Acrobat,都将它们视为一个或全部,没有任何方法来打开和关闭,除非安装臃肿的Acrobat编辑器或完全增强的阅读器,如DC。

相关问题