使用 pdftk 拆分文件夹中的所有文件

使用 pdftk 拆分文件夹中的所有文件

我正在尝试使用 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.pdffileB.pdf将导致输出文件fileA-01.pdf,,fileA-02.pdf... fileB-nm.pdf(删除并重新添加.pdf数字后缀后的扩展名)。

如果你真的想要ad.pdf-->ad.pdf_01那就是"${file}_%02d"

答案2

我会

  • 确保您的 pdftk 是 2.01 版本,因为根据您链接的问题,该问题应该已得到修复。
  • 尝试安装不同的 JRE,链接 OpenJDK 或 Oracle JRE。
  • 尝试塞伊达,命令行,开源并分割PDF文件(除其他外),你可以自定义输出名称

不幸的是,这个问题尚未解决NullPointerException,也没有任何详细信息,所以很难说出到底出了什么问题。

相关内容