我需要一个 Linux 程序,它可以将 pdf 文件缩放到指定大小,并在需要时拉伸它们。我更喜欢命令行程序,但带有 gui 的程序也可以。
我发现了很多可以缩放 pdf 的程序,但它们都是按比例缩放的,然后只添加白色边框。但我需要一些可以拉伸 pdf 文件的东西,这样它就有了所需的确切尺寸而没有白色边框。
我知道拉伸可能会使 pdf 看起来很奇怪,但我有一些 pdf 文件只需要高 1.5 毫米,所以我需要拉伸它们的量不到 1%,所以我仍然认为它看起来不错。
答案1
我的方法需要安装 PDF 查看器和 PDF 打印机。我使用的查看器是福昕阅读器,适用于 Windows、Linux 和 Mac。
在 Foxit Reader 中,我可以打开 PDF 文件并将其打印到 PDF 打印机。此查看器在其“打印”对话框中提供了使用比例打印的选项。我可以将“自定义比例”设置为整数百分比,它会按该百分比缩放所有元素。
使用此查看器,您可以将元素拉伸百分之一,但不能指定更少的值。这可能对您来说足够了,也可能太多了,因为您说您需要拉伸精确的“高出 1.5 毫米”的量。
对于比上述方法更精确的方法,我能想到的一种方法是将所有页面导出为图像,放大和裁剪图像,然后将它们再次打包成 PDF。
您将无法选择部分文本,因为所有内容都将成为图像。
答案2
即使标称分辨率为正方形,PDF 中的图像也经常具有不同的 X 和 Y 放置比率,因此,如果您可以通过命令(例如 SED)使用文本编辑器,并使用解压缩的图像分页 PDF(例如使用 QPDF(对商业用户免费,而 cpdf 对私人用户免费)。然后您可以编辑位置。以这个 3 像素 x 3 像素扫描的小例子为例
%PDF-1.7
%µ¶
1 0 obj <</Type/Catalog/Pages 2 0 R>> endobj
2 0 obj <</Type/Pages/Count 1/Kids[3 0 R]>> endobj
3 0 obj <</Type/Page/MediaBox[0 0 72 72]/Rotate 0/Resources<</XObject<</Img0 5 0 R>>>>/Contents 4 0 R/Parent 2 0 R>> endobj
4 0 obj <</Length 30>>
stream
q
72 0 0 72 0 0 cm
/Img0 Do
Q
endstream
endobj
5 0 obj <</Length 27/Type/XObject/Subtype/Image/Width 3/Height 3/BitsPerComponent 8/SMask null/ColorSpace/DeviceRGB>>
stream
ÿ ÿ ÿ ÿÿÿ ÿÿÿ ÿÿÿ€€€
endstream
endobj
xref
0 6
0000000000 65536 f
0000000015 00000 n
0000000060 00000 n
0000000111 00000 n
0000000235 00000 n
0000000314 00000 n
trailer
<</Size 6/Root 1 0 R>>
startxref
485
%%EOF
然后我们只需将页面高度和图像大小的第二个72编辑为99。
3 0 obj <</Type/Page/MediaBox[0 0 72
99]/Rotate 0/Resources<</XObject<</Img0 5 0 R>>>>/Contents 4 0 R/Parent 2 0 R>> endobj
4 0 obj <</Length 30>> 流
q
72 0 0
990 0 cm
/Img0 Do
请注意,这特定于每页一张图像,如果每页有几十个对象,那么就需要进行几十次调整,而且通常更为复杂。
没有任何变化,提取图像时它仍然是 3 平方像素。@ 1/72 dpi 它不会拉伸,这只是媒体打印的错觉。这就是扫描仪可能显示水平 199 dpi 和垂直 201 dpi,而实际上导入的是 200 平方。
答案3
这信息来自我们的朋友Unix 和 Linux。正如该答案所建议的那样,
您可以使用 pdfjam 和 --papersize 参数来设置输出纸张大小。如果您想要做的不仅仅是同时调整页面及其内容的大小,您可能还需要使用 --scale 和 --offset。
pdfjam --papersize="$(LC_ALL=C pdfinfo model.pdf | awk '/^Page size:/ {printf "{%fbp,%fbp}", $3, $5}')" file.pdf new_file.pdf
您还可以从此处找到使用 ghostscript 的其他方法回答来自 StackOverflow。
答案4
您是否尝试过通过 Photoshop 或 Sketch 等工具打开 pdf,然后在那里拉伸它?
然后您可以使用它重新保存它。
做足够多的时间后,您就可以获得像素级的精度。