Я должен объединить о 100 PDF файлы в тот, где каждый файл использует более или менее те же шрифты неиз подмножества. Все опции я попробовал до сих пор (pdfunite
, gs
, и т.д.), не интеллектуальны о дублировании шрифта, и объединенный PDF заканчивается с 100 копии того же шрифта и поэтому намного больше, чем это должно быть.
Есть ли способ сделать любое из следующего:
Идеальное решение будет иметь коммерческую дружественную лицензию Open Source (например, не APGL).
Вопреки тому, что Вы говорите, последние версии Ghostscript стали довольно эффективными когда дело доходит до слияния нескольких PDFs в единственный, и в то же время стараясь не встраивать идентичный шрифт многократно.
Вот детали, приблизительно 3 вводят PDFs, который я объединю в единственный вывод:
for i in {1..3}; do pdffonts ${i}.pdf ; echo ; done name type encoding emb sub uni object ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi yes no no 8 0 name type encoding emb sub uni object ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi yes no no 8 0 name type encoding emb sub uni object ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi yes no no 8 0
Теперь объедините эти три входных файла PDF с помощью pdftk
.
pdftk 1.pdf 2.pdf 3.pdf cat output merged.pdf
Теперь проверьте состояние шрифта вывода merged.pdf:
pdffonts merged.pdf name type encoding emb sub uni object ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi yes no no 5 0 Helvetica Type 1C WinAnsi yes no no 14 0 Helvetica Type 1C WinAnsi yes no no 23 0
Хорошо, еще там...
gs -o optim.pdf -sDEVICE=pdfwrite merged.pdf GPL Ghostscript GIT PRERELEASE 9.27 (2018-11-20) Copyright (C) 2018 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Processing pages 1 through 3. Page 1 Page 2 Page 3
ls -lh {1..3}.pdf merged.pdf optim.pdf -rw-r--r-- 1 kurtpfeifle staff 51K Dec 31 20:25 1.pdf -rw-r--r-- 1 kurtpfeifle staff 51K Dec 31 20:25 2.pdf -rw-r--r-- 1 kurtpfeifle staff 51K Dec 31 20:25 3.pdf -rw-r--r-- 1 kurtpfeifle staff 147K Dec 31 20:32 merged.pdf -rw-r--r-- 1 kurtpfeifle staff 7.5K Dec 31 20:34 optim.pdf
Я протестировал это с Ghostscript v9.25.
Если это не будет работать на Вас, то Вы должны будете...
Я знаю, что этот ответ не предоставляет Вам решение, которое встречает точно Ваши лицензионные требования. - Но Ваш ложный оператор о Ghostscript предложил мне давать этот ответ так или иначе, таким образом, другие люди, заинтересованные этой темой, могут все еще извлечь выгоду из него...