python - svg 或 pdf 的破坏性裁剪和调整大小

Posted

技术标签:

【中文标题】python - svg 或 pdf 的破坏性裁剪和调整大小【英文标题】:python - destructive cropping and resizing of svg or pdf 【发布时间】:2020-05-11 05:31:05 【问题描述】:

我想要做的是将一个大的 svg/pdf(简单的例子是 A3 尺寸)裁剪并调整为 A4 以用于重叠的海报打印。 A3 的尺寸为 420 毫米 x 297 毫米。 该脚本应剪切出 180 毫米 x 257 毫米的部分(即 A4 每边减去 20 毫米边框)并将其粘贴到 A4 页面的中心或先保存裁剪的部分,然后将边框添加到裁剪的文件以产生 A4 尺寸. 如果我让这部分工作,我可以做一个循环来根据需要的重叠移动裁剪区域

我在这里找到了一些提示:

Cropping pages of a .pdf file

Python + PyPdf: Crop region of page and paste it in another page

但没有什么能完全符合我的需要,因为裁剪 svg/pdf 似乎默认是非破坏性的。我真的很想摆脱裁剪区域之外的信息,这些信息在调整大小时不再显示。

我搜索了很多,但找不到合适的解决方案。我并不懒于编写和测试代码,但是有 2 个小孩和一份全职工作,我的时间非常有限。 因此,如果有人能用一个非常基本的代码 sn-p 帮助我,或者指出我不会浪费时间尝试导致死胡同的事情,我将非常感激:)

提前感谢您的帮助,非常感谢:)

干杯, 托比

【问题讨论】:

在这里发疯。似乎没有办法简单地裁剪 pdf/svg 并删除媒体、出血、视图框之外的任何内容……如果我尝试使用例如渲染cairo 我收到错误,因为整页非常大 :( 有人知道吗? 【参考方案1】:

您找到的第二个链接包含有用的代码。缺少的是页面的裁剪区域仅指示读者隐藏裁剪区域之外的所有内容。因为内容仍然存在,这在链接的问题中很明显。

所以要克服这个问题,请像链接的问题一样继续,但在使用页面内容时,请确保您也剪辑到裁剪区域。 IE。保存图形状态,定义与裁剪区域等效的剪切路径,然后调用page.mergeScaledTranslatedPage,然后恢复图形状态。

【讨论】:

感谢您的帮助!我试过了,但不幸的是我无法运行代码,也不知道在哪里插入mergePage。 pypdf 的流使用仍然让我感到困惑。你能给我一个简短的样本吗? 很抱歉,我一般不熟悉pypdf或Python提供详细说明。

以上是关于python - svg 或 pdf 的破坏性裁剪和调整大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 imagemagick 将剪切/裁剪标记添加到 pdf

LaTeX:svg图片转pdf,以及pdf图片去白边

裁剪后python pdf空白[重复]

裁剪 PDF 并使用 jquery 或 javascript 保存 [关闭]

python导入svg图片格式

裁剪.pdf文件的页面