Як імпортувати, експортувати та редагувати закладки файлу 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), подібний до цього, для запису навіть для PDF-сторінки на 1000 сторінок потрібно всього 5 хвилин.

{
  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 w / bookmarks. На жаль,


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


Спасибі! Чи існує версія версії 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, я вибираю опцію «Копіювати текст із зображення» (у меню, яке з’являється після правого клацання зображення знімка), і вставляю його збоку, щоб виправити відступ (як правило, з куль).


1

HandyOutline. 1 перетягування, 1 клацання, зроблено. https://sourceforge.net/projects/handyoutlinerfo/ . Безкоштовно. Підзакладок відступів. Не потрібно будь-якого читача / редактора PDF. Також редагуйте, експортуйте всі деталі в текст (скопіюйте в слово, напишіть макрос, щоб привести його у повністю функціональний документ з текстом) або XML, відредагуйте, імпортуйте у PDF. Dev заслуговує на пожертви.

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

JPDF вимагав Java, експортував сміття для форматування, не міг його очистити, щоб отримати лише імена

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

:-)


Люблю, що цей експортує у XML, а не в індіосинкратичний формат. Інтерфейс перетягування для експорту також не міг бути простішим. Я тільки хочу, щоб це могло зробити відразу кілька.
Еван Донован

0

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


0

Щоб прочитати всі закладки з PDF у текстовий файл, ви можете використовувати цю команду з pdftk:

pdftk input.pdf dump_data output output.txt

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

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

Якщо ви хочете видалити цифри, замініть цей вираз:

BookmarkTitle: A8.\d.\d+\s
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.