Получая метаданные из некоторых файлов PDF с закладками pdftk
, я наблюдаю формат закладок в метаданных PDF. Таким образом, я предполагаю, что с pdftk
, можно добавлять и редактировать закладки PDF-файла.
Вот три шага, которым я следую:
- Сначала я получаю метаданные (включая закладки, если таковые имеются) из PDF-файла в текстовый файл
pdftk in.pdf dump_data > in.info
. Затем я добавляю несколько закладок в текстовый файл метаданных
in.info
, меняя его сInfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
в
InfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 BookmarkBegin BookmarkTitle: Front cover BookmarkLevel: 1 BookmarkPageNumber: 1 BookmarkBegin BookmarkTitle: About the Author BookmarkLevel: 1 BookmarkPageNumber: 5 BookmarkBegin BookmarkTitle: Title page BookmarkLevel: 1 BookmarkPageNumber: 6 BookmarkBegin BookmarkTitle: Copyright page BookmarkLevel: 1 BookmarkPageNumber: 7 BookmarkBegin BookmarkTitle: Foreword BookmarkLevel: 1 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
- Затем я пытаюсь поместить отредактированные метаданные обратно в файл PDF
pdftk in.pdf update_info in.info output out.pdf
.
Но когда я открываю новый файл PDF out.pdf
в evince или Adobe Reader, в новом файле PDF нет закладки.
Если я получаю метаданные из нового файла в формате PDF с out.pdf
помощью pdftk out.pdf dump_data > out.info
, не будет никаких закладок в out.info
. Похоже, закладки не были успешно добавлены.
Мне было интересно, если есть какие-то ошибки? Как мне добавлять и редактировать закладки PDF-файла, не обязательно с помощью pdftk?
Ответы:
Как мне кажется, начиная с версии 1.45 (2012-12-06), pdftk позволяет изменять закладки с помощью команды update_info:
через: http://www.pdflabs.com/docs/pdftk-version-history/
источник
BookmarkBegin
тегами перед каждой записью закладки отсутствуют.jPDFtweak (Java, так работает на Unix / Linux) может изменять закладки, но я не знаю, можете ли вы что-нибудь с ним написать .
Для сценариев я бы предположил, что единственным вариантом Unix / Linux будет pdflatex с пакетом pdfpages. Но это кривая обучения, если вы еще не являетесь пользователем LaTeX.
РЕДАКТИРОВАТЬ: На самом деле это может быть возможно с ghostscript: смотрите здесь или здесь или здесь
источник
Если вы все еще придерживаетесь этих сценариев Unix, то
pdftk
gs
принимается командой ghostscript .gs
скрипт, чтобы объединить их вместе с pdfmarksПосмотрите на http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ скрипт, который
pdf-merge.py
делает именно то, что вы (или я) хотите.pdf-merge.py --output=merged.pdf input1.pdf input2.pdf
Некоторые незначительные улучшения могут быть сделаны в его сценарии
Во всяком случае, это должно работать
источник
pdftk - определенно правильный инструмент (с правильным синтаксисом):
источник
Калеб,
Насколько я понимаю, закладки в соответствии со спецификацией PDF не могут быть введены с помощью диагностического инструмента, как
pdftk
. Обновление метаданных для ссылки на главы и привязки к закладкам, которые не существуют, определенно не сработает, это может даже сделать ваш PDF непоследовательным или недоступным.Я закончил тем, что использовал библиотеки java + iText, чтобы делать то, что вы предлагаете согласно этому уроку , но мы имеем дело с сотнями PDF-файлов ежедневно, поэтому его нужно было автоматизировать. Если вы делаете один раз, Adobe Acrobat должен быть в состоянии сделать это.
источник
Подводя итог всем этим хорошим ответам:
На GitHub есть проект bmconverter, который может конвертировать различные форматы закладок PDF. Он может конвертировать вывод pdftk в формат jpdftweak, хотя, если вы будете использовать jpdftweak, вам не нужно конвертировать вывод pdftk в csv, так как вы можете выполнять всю работу из jpdftweak.
К сожалению, pdfmarks не поддерживается проектом, но, к счастью, кто-то опубликовал скрипт в проблемах bmconverter, который может преобразовать вывод pdftk в pdfmarks. Таким образом, пакетный вариант ghostscript является опцией
источник
pdftk
Формат закладки немного утомительно писать. Вместо этого я создал свой собственный сценарий , используяbash
,sed
,pdftk
иpython3
. Проверьте это в этом репо: https://github.com/SiddharthPant/bookyТак что теперь я могу создать такой текстовый файл (
bkmrks.txt
), который займет всего 5 минут, даже для 1000 страниц PDF.а потом используй мой скрипт
это автоматически создает pdf (
pdf_file_new.pdf
), в котором есть мои закладки.источник
Просто добавьте
BookmarkBegin
перед каждой закладкой, как висточник
Перенаправление, которое вы использовали в шаге 1, приведет к некорректной работе update_info. Вам нужно указать выходной файл для pdftk:
Смотрите этот ответ на аналогичный вопрос: /programming//a/30308964/3158933
Файлы, которые я создал с помощью перенаправления, имеют немного больший размер и заставляют pdftk выдавать сообщение «Предупреждение: неожиданный случай 1 в LoadDataFile (); продолжение» при выполнении команды update_info.
источник