Я пытаюсь использовать 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' разделяется на 'рекламу pdf_01' и 'рекламу pdf_02', если это содержит две страницы.
Проблема, кажется, что 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"
.
Я был бы
, К сожалению, это - непойманное NullPointerException
и нет никаких деталей, таким образом, трудно сказать то, что идет не так, как надо.