Как изменить цвет всех основных моментов в файле PDF?

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

Вот пример PDF с выделенной линией.

2 Solutions collect form web for “Как изменить цвет всех основных моментов в файле PDF?”

Я написал сценарий Python для выполнения задачи. Он ищет все объекты в файле PDF (помеченные obj и endobj ) и проверяет каждый объект, если он является аннотацией ( /Type/Annot ) типа выделения ( /Subtype/Highlight ). Если это так, то определение цвета ( /C[...] ) будет заменено.

Существуют некоторые ограничения:

  • Настоящий синтаксический разбор PDF не выполняется. Используемые регулярные выражения могут не подходить для некоторых файлов PDF.
  • Это может не работать для зашифрованных или сжатых PDF-файлов. (Я не уверен, что аннотации могут быть сжаты.)
  • Исходный файл будет перезаписан. Не обвиняйте меня в потерянных данных! (Сценарий легко редактируется для создания новых файлов.)
  • Я предполагаю, что некоторые объекты PDF ссылаются на другие объекты по их положению в файле. Таким образом, я не могу изменить размер файла. Это означает, что новое определение цвета может не занимать больше байтов, чем старый.
  • Определение цвета не проверено. Вы можете разорвать PDF-файл с недопустимым выражением.

Вот моя попытка регулярного выражения. Замена происходит на месте, поэтому перед тем, как начать, сделайте копию своего документа.

Этот вариант работает, когда присутствует массив цветов:

 $ perl -pi -e 's/(\/Type.*\/Annot.*\/Subtype.*\/Highlight.*\/C\s*\[)[^]]*]/${1}0.5 0.5 0.5]/' document.pdf 

Это тот, когда цветной массив не указан (по умолчанию он черный):

 $ perl -pi -e 's/(?=\/Type.*\/Annot.*\/Subtype.*\/Highlight)(?!\C\s*\[)(.*)Highlight/$1Highlight\/C[0.5 0.5 0.5]/' document.pdf 

Если первая команда не работает, попробуйте другую. Если вторая работала, то для последующих изменений цвета используйте первую.

Замените 0.5 0.5 0.5 вашим любимым цветом, например

  • 0 0 1 для синего (0/255 0/255 255/255),
  • 1 1 0 для желтого (255/255 255/255 0/255) или
  • 1 0.8745098039 0.3607843137 для вида оранжевого (255/255 253/255 92/255).
  • замена sed не будет работать (регулярное выражение)
  • Является ли Evince безопасным способом просмотра вредоносного PDF-файла?
  • Реализация инструмента String -> PDF Stamp
  • Как установить evince на выпуск CentOS Linux 7.0.1406
  • Как прокручивать страницы 1, .., N-1 и показывать страницу N в программе просмотра PDF?
  • Объединить части страниц PDF-документа
  • Объедините в PDF первую страницу нескольких файлов odt в алфавитном порядке
  • Открыть подписанные PDF-файлы в Linux
  • Настройка PDF-документа CUPS для вывода PDF / A?
  • Проблемы преобразования PDF в DjVu
  • Невозможно просмотреть китайские символы в evince или xpdf
  • Linux и Unix - лучшая ОС в мире.