20

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

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

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

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

8 ответов8

20

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

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

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

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

12

Вы можете использовать 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 вместо этого, используя простую копировальную вставку. А затем импортируйте эти данные обратно.

3

Если у вас есть версия документа с закладками и вы хотите скопировать их, гораздо проще использовать 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 с закладками. К сожалению, все еще были некоторые различия в форматировании, так что я хотел просто применить закладки к оригинальному PDF, и именно тогда я нашел решение выше.

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 нет в стандартной комплектации), поэтому можно написать свои собственные сценарии импорта / экспорта, хотя это не так просто, чтобы сделать эти сценарии надежными.

1

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

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

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

0

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

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

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

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

:-)

0

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

pdftk input.pdf dump_data output output.txt

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

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

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

BookmarkTitle: A8.\d.\d+\s
0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .