3

我有一个 PDF 文件,它的大小正好是 A4 页面的 1/5,还有一个脚本可以通过重复附加将其转换为单个 A4 页面。问题是 ImageMagick 仅适用于位图图形,而我的 PDF 包含文本和详细的矢量图形。因此,结果是文本数据丢失,文件更大,打印输出更差。

我希望能够在convert -density 1200 $pdf_file $pdf_file $pdf_file $pdf_file $pdf_file +append $a4_file 不光栅化矢量图形的情况下做与线条相同的事情。

4

2 回答 2

2

pdftk 和 pdfnup 真的是最优秀的!

完成脚本的伪代码版本:

for each file:
    inkscape --export-pdf
    pdftk (pdf-file x 5) cat output 5.pdf
    pdfnup 5.pdf --nup 5x1 --paper a4paper --orient landscape --outfile {recto,verso}.pdf

pdftk R=recto.pdf V=verso.pdf cat R1W V1E output bookmark.pdf
于 2010-07-28T20:32:18.143 回答
1

好的,我知道这是如何工作的,但我目前无法对其进行测试。

现在考虑这三个命令(如果您不在 Windows 上,则需要 Unix-ification):

 gswin32c ^
    -sDEVICE=pdfwrite ^
    -o p1.pdf ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -r600x600 ^
    -dDEVICEWIDTHPOINTS=842 ^
    -dDEVICEHEIGHTPOINTS=595 ^
    -c "<</PageOffset [0 0]>> setpagedevice" ^
    -f c:/path/to/first.pdf

 gswin32c ^
    -sDEVICE=pdfwrite ^
    -o p2.pdf ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -r600x600 ^
    -dDEVICEWIDTHPOINTS=842 ^
    -dDEVICEHEIGHTPOINTS=595 ^
    -c "<</PageOffset [168.4 0]>> setpagedevice" ^
    -f c:/path/to/second.pdf

 gswin32c ^
    -sDEVICE=pdfwrite ^
    -o p3.pdf ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -r600x600 ^
    -dDEVICEWIDTHPOINTS=842 ^
    -dDEVICEHEIGHTPOINTS=595 ^
    -c "<</PageOffset [336.8 0]>> setpagedevice" ^
    -f c:/path/to/third.pdf

除非我有任何错误计算,否则这些将您的前 3 个 PDF 文件“打印”到 A4 横向介质上,但将每个文件的页面偏移量从 n 开始移动“n *(横向宽度的 1/5)”点=0。(A4 为 842x595 点)。你明白了……

现在您将拥有 3 个(及以后:5 个)新的 PDF 文件,而无需任何额外的位图图形。

您的工作现在仍然可以使用pdftk(您似乎很熟悉)将这 3 (5) 个 PDF 页面相互叠加。

如果这对您有用,请提供一些反馈。(并且不要让黑洞逃脱:-))。

于 2010-07-28T18:55:49.320 回答