我正在尝试使用 pdftk 将包含 pdf 文件的文件夹拆分为其组成页面。这是我的代码:
~/MCO/MCOs$ for file in *.pdf; do pdftk "$file" burst; done
该命令本身似乎没有错误,但我收到如下java错误:
Unhandled Java Exception in create_output():
Unhandled Java Exception in main():
java.lang.NullPointerException
at gnu.gcj.runtime.NameFinder.lookup(libgcj.so.16)
at java.lang.Throwable.getStackTrace(libgcj.so.16)
at java.lang.Throwable.stackTraceString(libgcj.so.16)
at java.lang.Throwable.printStackTrace(libgcj.so.16)
at java.lang.Throwable.printStackTrace(libgcj.so.16)
人们似乎对此有所认识问题,但尚不清楚该问题是否已经得到解决或如何得到解决。
我正在尝试获取我的输出,例如,如果文件“ad.pdf”包含两页,则将其拆分为“ad.pdf_01”和“ad.pdf_02”。
答案1
问题似乎是pdftk burst
默认将其输出文件命名为pg_0001.pdf
,等等,pg_0002.pdf
而不管输入文件名是什么。
确切地为什么导致错误的原因尚不清楚 - 可能是它在关闭前开始处理下一个文件。无论如何,在这种情况下覆盖文件显然是不可取的 - 因此解决方案是逐个文件更改输出。
根据pdftk
手册页:
To name these pages yourself, supply a
printf-styled format string via the output section. For
example, if you want pages named: page_01.pdf, page_02.pdf,
etc., pass output page_%02d.pdf to pdftk.
例如你可以这样做
for file in *.pdf; do pdftk "$file" burst output "${file%.pdf}-%02d.pdf"; done
对于输入fileA.pdf
,fileB.pdf
将导致输出文件fileA-01.pdf
,,fileA-02.pdf
... fileB-nm.pdf
(删除并重新添加.pdf
数字后缀后的扩展名)。
如果你真的想要ad.pdf
-->ad.pdf_01
那就是"${file}_%02d"
。