2014-02-16 78 views
2

使用pdftk时遇到了一些问题。使用`pdftk`修剪和组合PDF问题

我想要获取指定目录中每个PDF的第二页,并将它们合并为一个输出文件。

注意:有问题的PDF文件是用wkhtmltopdf创建的。

我变成目录,运行以下命令:

mkdir trimmed-combined 
for i in *pdf ; do 
    pdftk “$i” cat 2 output “trimmed-combined/trimmed-combined1.pdf” ; 
done 

我收到以下错误:

Unexpected Exception in open_reader() 
java.lang.IllegalArgumentException: null filename passed into RandomAccessFileOrArray() 
    at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk) 
    at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk) 
    at pdftk.com.lowagie.text.pdf.PRTokeniser.<init>(pdftk) 
    at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk) 
    at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk) 
Error: Failed to open PDF file: 
    “?? 

的文件是肯定有的,所以我不知道为什么他们AREN没有正确阅读。

+0

你的报价看起来很可疑。尝试调试你的shell脚本。 –

+0

文件名有多长?尝试较小的。 –

回答

0

我用你原来的命令(我只重新格式化为可读性):

mkdir trimmed-combined 
for i in *pdf ; do 
    pdftk “$i” cat 2 output “trimmed-combined/trimmed-combined1.pdf” ; 
done 

我得到完全相同的错误,你做......

而且像已经@MartinSchröder在评论观察到,当我编辑OP提高可读性时注意到,您使用的报价是:

$ unicode “” 

    U+201C LEFT DOUBLE QUOTATION MARK 
    UTF-8: e2 80 9c UTF-16BE: 201c Decimal: &#8220; 
    “ 
    Category: Pi (Punctuation, Initial quote) 
    Bidi: ON (Other Neutrals) 

    U+201D RIGHT DOUBLE QUOTATION MARK 
    UTF-8: e2 80 9d UTF-16BE: 201d Decimal: &#8221; 
    ” 
    Category: Pf (Punctuation, Final quote) 
    Bidi: ON (Other Neutrals) 

我假设你已经copied'n'pasted(的某些部分)这comman d来自HTML电子邮件,或PDF文档,或来自某些使用“智能”引号的网页。这些引号不会像预期的那样在shell中运行。您需要使用ASCII引号:

$ unicode \" 

    U+0022 QUOTATION MARK 
    UTF-8: 22 UTF-16BE: 0022 Decimal: &#34; 
    " 
    Category: Po (Punctuation, Other) 
    Bidi: ON (Other Neutrals) 

因此改变你的命令,这一点,并如预期一切正常:

mkdir trimmed-combined 
for i in *pdf ; do 
    pdftk "$i" cat 2 output "trimmed-combined/trimmed-combined1.pdf" ; 
done