如何以编程方式删除PDF图层?
问题描述:
我知道Doc.SetOCGOrder()
等,但很显然,Acrobat API不提供删除图层(也称为可选内容组,ocgs)的方法,只是为了将它们隐藏起来而不让用户通过脚本访问它们。如何以编程方式删除PDF图层?
我不是被迫使用Acrobat,实际上我更喜欢使用FOSS解决方案(或者至少是免费软件)。 pypdf2或pdftk。 编辑有another post使用abcpdf,这是不幸的是不自由。有没有办法将该行为移植到Acrobat的JS或pypdf2?基本上,答案似乎循环遍历每个页面的内容,这似乎包括图层。
(关于合并,我注意到pdftk
合并多个文件时,不会删除层,因此可以简单pdftk A=input.pdf B=input.pdf cat A1-end output output.pdf
。)
答
我迄今为止的做法:对于通过GetOCGs()
获得相关层设置locked=true
两者initState=false
和state=false
。然后使用SetOCGOrder()
从图层视图中移除图层。不幸的是,这并不完美,因为至少在Acrobat DC中,我仍然可以在图层面板中选择“显示所有图层”,它仍然显示图层。现在可以合并所有图层,但我也没有找到通过编程实现该选项的选项,也不会实际删除隐藏图层的元素。
WIP-想法:让无形层,然后再使用'pdftk'合并。但是,这确实会删除图层内容吗? –
您是否想要将图层的内容与其定义一起删除,还是只想删除该图层中的信息?此外,您对哪些编程环境感兴趣的解决方案? – mkl
@mkl我想要真正删除图层的内容。否则,我可以使用Acrobat的API并更改属性(尽管我不确定是否必须简单地使用“locked”和“initState”或修改/清空“意图” - 实际上,https:// www。 uvsar.com/projects/acrobat/indesignfixups/建议我不得不通过'setOCGOrder'来“移除”它)。 –