]> Sergey Matveev's repositories - stargrave-blog.git/commit
Метаинформация PDF-файлов
authorSergey Matveev <stargrave@stargrave.org>
Thu, 27 Jan 2022 18:05:41 +0000 (21:05 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 27 Jan 2022 18:47:21 +0000 (21:47 +0300)
commit5c2b1203284c41e99a6af455ce9257821d95dd3d
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent3e191a9e6d0eb90216c7bc640b698d7274c46f48
Метаинформация 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 на самом деле ничего не удаляет, а
инкрементально дописывает изменения. И только сторонними утилитами можно
действительно избавиться от ненужного.