我从 api 收到一个 PDF,分辨率为 429x643mm - 我需要一个大约 100 x 150 的文档,这意味着我需要将长度和高度除以大约 4.24 或 4.25。
我不想改变文件大小,我不关心里面任何图像的分辨率,我只是想使用PHP以非破坏性的方式改变分辨率。我可以使用 imagick,但我担心在谷歌搜索后,如果我尝试更改分辨率,imagick 会光栅化整个 pdf,这并不理想。
我浏览过stackoverflow,但之前找不到类似这个问题的内容,所以我希望我能找到以前做过类似事情的人。
您并不是要尝试更改 PDF 的分辨率;而是要更改 PDF 的分辨率。 PDF 没有分辨率。您正在尝试缩放 PDF 中的页面。
一般有两种方法可以做到这一点:
重写页面内容,重新计算页面内容中所有对象的位置和大小。然后还要重新计算每个页面的 /Page 元素中不同页面框的位置和大小。
在 /Page 元素中插入 /UserUnits 键。如果打印机支持的话,这可以缩放页面(向上或向下)(它应该是,但符合标准......)。
因此,您要么需要一个可以为您缩放整个页面的工具,要么需要一个可以在 PDF 文件每页的页面字典中插入附加键的工具。
不是完整的答案,但有了这个,您可能有更好的机会找到工具或代码来完成您需要做的事情。肯定有一些库可以做这些事情。