[О блоге] [наверх] [пред] [2022-01-27 21:05:41+03:00] [5c2b1203284c41e99a6af455ce9257821d95dd3d]
Темы: [zsh]

Метаинформация PDF-файлов

http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=bin/bin/ps2pdf.zsh
Оригинальная ps2pdf команда на самом деле является просто shell обёрткой
над Ghostscript-ом, передавая пару опций, типа желаемой версии
создаваемого PDF. Я давно уже использую самописный ps2pdf.sh, который
старается делать PDF/A документы: типа более надёжные на то что будут
везде открыты. Как минимум я хочу чтобы он встраивал шрифты в них, а то
уже насмотрелся когда пользователи Windows/Word отправляют PDF-ки, в
которых ссылки на отсутствующие шрифты.

PDFSETTINGS=/default на удивление делает почти всё что мне надо и не
делает того что мне не надо. Дополнительно я указываю чтобы "фильтрация"
изображений не применялась -- насколько понимаю, он не будет пытаться
что-то пересжимать/перекодировать.

Этот же скрипт я использую для "пересжатия" уже имеющихся на руках
PDF-ок. На самом деле оно зачастую может увеличить документ, как минимум
из-за добавленных шрифтов.

Обратил внимание что Ghostscript создаёт свою собственную метаинформацию
в файле, хотя и старается брать некоторые поля из оригинального файла.
Всякое имя автора, заголовок pdflatext при использовании
    \usepackage[pdfusetitle]{hyperref}
пропишет в результрующий файл. В ps2pdf добавил вызов exiftool для
удаления всяких пустых полей, полей содержащих UUID-ы (ну не нравится
мне такой род информации), плюс копирую информацию о программе создавшей
изначальный PDF. В итоге получается:

    PDF Version                     : 1.4
    Linearized                      : No
    Page Count                      : 1
    XMP Toolkit                     : Image::ExifTool 12.30
    Creator                         : pdfTeX-1.40.22
    Title                           : Мой титульный лист
    Producer                        : GPL Ghostscript 9.25
    Conformance                     : B
    Part                            : 1
    Create Date                     : 2022:01:27 21:30:56+03:00
    Creator Tool                    : LaTeX with hyperref
    Modify Date                     : 2022:01:27 21:30:56+03:00
    Author                          : Сергей Матвеев

Изначально это всё было на pure POSIX shell с вставками Perl-а для
выдирания названий полей. Но затем этот скрипт стал ещё одной жертвой
моей любви к zsh, с которым внешние утилиты (ну кроме, собственно, gs и
exiftool) полностью исчезли и код стал существенно проще. Всё же мне
очень нравится zsh уже и как язык скриптования. Знаю что можно написать
нечто менее понятное чем на Perl-е, но... так можно везде.

Хотя я обнаружил что ExifTool на самом деле ничего не удаляет, а
инкрементально дописывает изменения. И только сторонними утилитами можно
действительно избавиться от ненужного.

    [оставить комментарий]