在单个页面中克隆PDF文件

时间:2010-07-28 13:58:22

标签: pdf imagemagick pdftk

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

我希望能够像convert -density 1200 $pdf_file $pdf_file $pdf_file $pdf_file $pdf_file +append $a4_file 一样执行相同操作而不用光栅化矢量图

2 个答案:

答案 0 :(得分:2)

pdftk和pdfnup真的非常棒!

finished script的伪代码版本:

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

答案 1 :(得分: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 *(横向宽度的1/5)点,从n = 0开始。 (A4为842x595分)。你明白了......

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

现在,您的工作仍然是使用pdftk(您似乎熟悉的)将这3(5)个PDF页面叠加在一起。

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