From 5c2b1203284c41e99a6af455ce9257821d95dd3d Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 27 Jan 2022 21:05:41 +0300 Subject: [PATCH] =?utf8?q?=D0=9C=D0=B5=D1=82=D0=B0=D0=B8=D0=BD=D1=84=D0=BE?= =?utf8?q?=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8F=20PDF-=D1=84=D0=B0=D0=B9?= =?utf8?q?=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 на самом деле ничего не удаляет, а инкрементально дописывает изменения. И только сторонними утилитами можно действительно избавиться от ненужного. -- 2.50.0