Как импортировать, экспортировать и редактировать закладки PDF-файла?

21

Я слышал, что закладки PDF-файла хранятся в виде простого текста где-то в файле. Мне было интересно, можно ли импортировать и экспортировать закладки файла PDF в текстовый файл и из него для пакетной обработки?

Если да, есть ли описание синтаксиса для редактирования текстового файла, содержащего закладки PDF-файла?

Я надеялся на бесплатные программные решения для Ubuntu 10.10 и для Windows 7.

Спасибо и всего наилучшего!

Тим
источник

Ответы:

22

Существует множество инструментов, которые могут извлекать закладки из PDF-файла в простой текстовый файл и наоборот. Вот некоторые из них:

  • Pdftk
  • Панель инструментов iText (только для старых версий, получить itext-2.0.1.jar )
  • инструмент pdfWritebookmarks , который я использую
  • JPdfBookmarks, который даже имеет графический интерфейс.

Кроме того, у меня есть скрипт, который может конвертировать между форматами многих из этих инструментов: bmconverter.py .

Другой очень хороший способ - добавить закладки в pdf через pdflatex .

Майкл Гёрц
источник
13

Вы можете использовать pdftkдля этого. Подробнее: Как экспортировать и импортировать PDF закладки .

Экспортируйте закладки PDF в командной строке следующим образом:

pdftk C:\Users\Sid\Desktop\doc.pdf dump_data output C:\Users\Sid\Desktop\doc_data.txt

Импортируйте закладки PDF из файла данных следующим образом:

pdftk C:\Users\Sid\Desktop\doc.pdf update_info C:\Users\Sid\Desktop\doc_data.txt output C:\Users\Sid\Desktop\updated.pdf

pdftkФормат закладки немного утомительно писать. Вместо этого я создал свой собственный сценарий , используя bash, sed, pdftkи python3. Проверьте это в этом репо: https://github.com/SiddharthPant/booky

Так что теперь я могу создать такой текстовый файл ( bkmrks.txt), который займет всего 5 минут, даже для 1000 страниц PDF.

{
  Title1, 1
  Title2, 2
  {
    Subtitle1, 3
    Subtitle2, 4
    {
      SubSubtitle1, 5
      ...
    }
  }
}

а затем использовать мой скрипт

./booky.sh pdf_file.pdf bkmrks.txt

это автоматически создает pdf ( pdf_file_new.pdf), в котором есть мои закладки.

Это будет работать в * nix системах, если вы вместо этого работаете на Windows-машине. Затем сначала установите python3и pdftkпросто используйте booky.pyфайл в репозитории для конвертации bkmrks.txtв pdftkсовместимый формат

python3 booky.py < bkmrks.txt > output.txt

а затем с помощью команды экспорта создать файл данных с дампом. Удалите предыдущие закладки из этого файла и вставьте output.txtвместо них содержимое, используя простую копию вставки. А затем импортируйте эти данные обратно.

Сиддхарт Пант
источник
4

Если у вас есть версия документа с закладками и вы хотите скопировать их, гораздо проще использовать PDF-XChange Viewer (я использовал v2.5.211). Откройте PDF-файл с закладками (исходный PDF-файл), выберите все закладки на панели закладок, скопируйте их с помощью клавиш Ctrl + C, откройте PDF-файл, на котором нет закладок (целевой PDF-файл), и вставьте их (Ctrl). + V) в панели закладок этого PDF. PDF-Xchange Viewer сохраняет свойства закладок, как они были из исходного PDF (включая любое форматирование жирным шрифтом / курсивом в тексте закладки). Если по какой-либо причине некоторые из разделов целевого PDF-файла ниже или выше из-за изменений, внесенных в документ, вы можете щелкнуть закладку, нуждающуюся в исправлении, прокрутить до того места, на котором вы хотите открыть закладку, вправо- нажмите на закладку еще раз и нажмите «Установить пункт назначения». Повторите эту последнюю часть по мере необходимости для любой оскорбительной закладки. Сохраните целевой PDF, когда закончите.

Это отлично сработало для меня, было довольно интуитивно понятно, и я закончил через несколько минут. В моем конкретном сценарии сотрудник с помощью Word для Mac создал очень длинный документ, в котором не было закладок. Из-за длины документа я хотел закладки, соответствующие структуре документа. Я мог заставить Word для Windows сохранить документ в виде PDF с закладками, но некоторые различия в форматировании между Word для Windows и Word для Mac довольно сильно сбили счетчик страниц (в частности, были различия в пустом пространстве вокруг нижних колонтитулов и различия в промежутке между цифрами и подписью). Мне удалось поиграть с верхними и нижними колонтитулами, а также с размерами рисунков, чтобы получить правильную нумерацию страниц в Word для Windows, а затем сохранить в PDF с закладками. К сожалению,

Джейсон
источник
1
+1 для PDF-Xchange. Чем меньше инструментов, тем
лучше
1

Спецификация для файлов PDF доступна в виде свободно загружаемого PDF от Adobe - или, по крайней мере, это было в прошлый раз, когда я проверял. Однако большинство файлов PDF содержат наиболее сжимаемые данные. Возможно, когда-то давно существовала в основном текстовая версия PDF, и если это так, то она все еще будет действительна сейчас, но на самом деле получение файла в такой форме может быть проблемой.

Хотя я этого не делал, одна из наиболее вероятных возможностей (если вы готовы платить) - это купить Acrobat Pro и использовать возможности сценариев Javascript, встроенные в это приложение. Для начала ...

http://acrobatusers.com/tutorials/2008/10/auto_bookmark_creation

В этом руководстве показано, как автоматически создавать закладки с помощью Javascript в Acrobat 7.0 Pro (версия включена в Creative Suite CS2). Хотя это становится немного старым, та же самая техника должна хорошо работать для более новых версий.

Приложения Adobe включают в себя библиотеку для чтения / записи текстовых файлов с использованием Javascript (то, чего у Javascript нет в стандартной комплектации), поэтому можно написать свои собственные сценарии импорта / экспорта, хотя это не так просто, чтобы сделать эти сценарии надежными.

Steve314
источник
Благодарность! Есть ли версия Acrobat Pro для Linux?
Тим
Извините - я очень в этом сомневаюсь. AFAIK - это Mac или Windows, и Adobe вряд ли будет поддерживать Linux, если огромное количество креативных профессионалов (1) не начнут использовать эту платформу и (2) покажут, что они готовы платить много за проприетарное программное обеспечение, а не использовать FOSS альтернативы. Кажется маловероятным Для бесплатного решения вы можете попробовать библиотеку, такую ​​как blog.rubypdf.com/2007/12/12/… (для Ruby). Я знаю об этом еще меньше - я просто нашел это в Google.
Steve314
1

Для экспорта закладок я использую другой подход, который требует использования Microsoft OneNote:

Я открываю программу чтения PDF (использую бесплатную версию Foxit) с видимой структурой закладок, а затем в OneNote прошу сделать снимок и выбрать структуру закладок Foxit.

Возвращаясь к OneNote, я выбираю опцию «Копировать текст из изображения» (в меню, которое появляется после щелчка правой кнопкой мыши по изображению) и вставляю его сбоку, чтобы исправить отступы (обычно с маркерами).

C.Delgado
источник
1

HandyOutline. 1 перетаскивание, 1 клик, готово. https://sourceforge.net/projects/handyoutlinerfo/ . Свободный. Отступы вложенных закладок. Не требует никакого читателя PDF / редактора. Также редактируйте, экспортируйте все детали в текст (скопируйте в слово, напишите макрос, чтобы привести его в полнофункциональный текстовый документ) или в XML, перепроверьте, импортируйте в PDF. Дев заслуживает пожертвований.

PDF-Xchange Editor (заменен PDFViewer), случайно скопированные / пропущенные закладки экспортируются в текст

JPDF требовал Java, экспортировал мусор форматирования, не мог очистить его, чтобы получить только имена

PDFtk дал мне головную боль, просто глядя на инструкции

:-)

Piecevcake
источник
Мне нравится, что этот файл экспортируется в XML, а не в более своеобразный формат. Интерфейс перетаскивания для экспорта также не может быть проще. Я только хотел бы, чтобы это могло сделать несколько одновременно.
Эван Донован
0

Я нашел другое довольно «глупое» решение, чтобы скопировать все закладки в PDF как текст для использования в другом месте. В Acrobat Pro (для Mac OS) нет возможности выбрать все закладки и скопировать / вставить их в Wordprocessor. Однако вы можете экспортировать весь PDF-файл в виде HTML-файла с опцией «одна HTML-страница + добавить навигационный кадр на основе закладок». Затем откройте HTML в браузере, выделите весь текст в навигационной рамке и скопируйте / вставьте его в текстовый процессор ...

Йохан Моррис
источник
0

Чтобы прочитать все закладки из PDF-файла в текстовый файл, вы можете использовать эту команду с pdftk:

pdftk input.pdf dump_data output output.txt

Затем я использовал регулярные выражения в Notepad ++, чтобы удалить лишние части. Следующее я заменил пустой строкой (по порядку), а затем у меня появился список закладок (не забудьте заменить с помощью регулярных выражений в вашем текстовом редакторе):

BookmarkLevel.*
BookmarkPageNumber.*
BookmarkBegin.*
\n\s+\n

Если вы хотите удалить цифры, замените это выражение:

BookmarkTitle: A8.\d.\d+\s
Квантовый физик
источник