我想使用 GS 从 pdf 文件生成缩略图。
- 缩略图必须适合 90x120 像素的矩形
- 图像不应旋转
- 应调整图像大小以适合矩形并保持宽高比
我使用以下命令:
gswin32 -dPDFFitPage -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT
-dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=0
-dDEVICEWIDTH=90 -dDEVICEHEIGHT=120 -dORIENT1=true
-sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4
-sOutputFile=output.%d.jpg input.pdf
结果:
如果我使用一些带有纵向页面的 PDF like this example ,您可以下载,那么缩略图是正确的,如下所示:
如果我使用它for a PDF对于横向页面,设备宽度以某种方式被视为高度:
如何防止这种行为?我希望我的保时捷也能是 90x120。我想也许我需要为 Ghostscript 提供一些 Postscript 代码(带有 -c 命令行参数),但我没有这方面的经验。有人可以帮我吗?
编辑1: 我尝试了suggestion of KenS 。使用 -dFIXEDMEDIA 我的保时捷被裁剪,如下所示:
编辑2: first solution of Kurt Pfeifle is not适合肖像图像(右侧白色部分,未正确使用空间)。见下文:
编辑3: third solution of Kurt Pfeifle几乎是好的。对于风景图像来说它是完美的:
但是,纵向页面存在尺寸问题,并且背景也变成完全灰色:
所以库尔特,我想我可以将 pdf 拆分为页面(使用 GS -dFirstPage 和 -dLastPage),然后如果您有一些想法,如何确定页面是否为横向或纵向,然后我可以做一些条件处理。任何想法?至于背景颜色,我认为不是那么重要,但如果你也有想法,那么欢迎。
最佳答案
好的,现在尝试根据上述“首先操作 PDF(以便它使用纵向媒体格式来显示其横向图像内容)”的想法提供更详细的答案 em>...
请注意,由于您的原始 PDF 并未对所有页面使用通用尺寸(它们都不同),因此我仅使用第一页进行了概念验证。
第 1 步:从原始内容(横向)中提取第 1 页
我使用 pdftk
来实现此目的:
porsches.pdf cat 1 output porsche-page1.pdf
第 2 步:在较大的纵向页面上居中横向内容
我使用 Ghostscript 加上 -c ...
PostScript 命令行片段:
gs \
-o porsche-page1-on-portrait-medium.pdf \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-g1920x2560 \
-r72 \
-c "<</PageOffset [0 560]>> setpagedevice" \
-f porsche-page1.pdf
/PageOffset
值是根据我在 1440 点的原始页面高度上添加 1120 点而得出的。因此,我将内容向上移动一半值,以便图片再次居中。
第 3 步:创建 JPEG 缩略图(肖像)
gs \
-sOutputFile=proofofconcept-thumb_%03d.jpg \
-dPDFFitPage \
-dDEVICEWIDTH=90 \
-dDEVICEHEIGHT=120 \
-sDEVICE=jpeg \
porsche-page1-on-portrait-medium.pdf
除非我没有完全误解你的意图:这应该是你想要的结果。 (注意:我在缩略图中添加了一个黑框,以便即使在 Stackoverflow 的白色 HTML 背景上也能看到其真实尺寸。)
关于pdf - 使用 Ghostscript 生成缩略图可旋转我的设备尺寸定义以实现横向 pdf 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11326318/