修复和组合PDF与`pdftk`的问题

时间:2014-02-16 15:43:57

标签: pdf wkhtmltopdf pdftk

使用pdftk遇到一些问题。

我正在尝试获取指定目录中每个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: 
   “??

文件肯定存在,所以我不确定为什么它们没有被正确读取。

1 个答案:

答案 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)

我假设您已经从HTML电子邮件,PDF文档或某些使用“智能”引号的网页复制了“n'pasted(某些部分)此命令”。这些引号不能按预期在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