2017-05-06 106 views
4

我有一个PDF文档,其中所有页面大小都不相同。我想调整每个页面大小(aka画布)到文档中找到的最大宽度和最大高度,然后居中。调整PDF画布最大页面大小

我已经习惯了pdftkGhostscript,但我可能会考虑一些其他的FOSS工具,如果它更好。

如何做到这一点?感谢提前。

回答

0

我已经做出了我的pdfjam脚本的份额,所以我想我会试试这个。

我有一个脚本pdfinfopdfjam工作(警告:这是基于pdflatex这是一个很大的包,几百MBS):

#!/bin/bash 

pdf=$1 

nb_pages=$(pdfinfo "$pdf" | grep ^Pages: | cut -f2 -d:) 
echo "Found $nb_pages pages in document" 

# Get page sizes as string of width:height values in points (ie "2380:3368 3368:2380 1684:2380 ...") 
page_sizes=$(seq $nb_pages | while read p; do pdfinfo -f $p -l $p "$pdf" | grep -e '^Page.* size:' | awk '{print $4,$6}'; done) 
echo "Page sizes: $page_sizes" 

max_width=$(echo $page_sizes | tr ' ' '\n' | cut -f 1 -d: | sort -n | tail -n 1) 
echo "Max width: $max_width" 

max_height=$(echo $page_sizes | tr ' ' '\n' | cut -f 2 -d: | sort -n | tail -n 1) 
echo "Max height: $max_height" 

# Run pdfjam on source pdf and set page size, it will center each page 
set -x 
pdfjam --suffix fixed "$pdf" --papersize "{${max_width}pt,${max_height}pt}" 

它的工作原理(我试图在“输出.pdf “this page),但(至少在我的系统上),我发现你可以传递给--papersize参数的限制。如果pdfjam步骤失败,您可以尝试手动选择缩小的大小(保持比例)并重试该命令。

希望这会有所帮助。

+0

谢谢。我会试试这个! – Creasixtine

+0

你好,今天看来这是“不被接受的”。建议的解决方案有没有问题? –

+0

对不起。我本来希望有一个独特的命令行解决方案,但似乎没有。例如,也许我们应该联系Ghostscript创作者。无论如何,我想感谢你的解决方案。 – Creasixtine