Проблема здесь связана с ограничением устройства ps2write и с особенностями создания файлов.
В обоих файлах PDF используется CIDFonts, устройство ps2write реализует только базовый вывод PostScript уровня 2,и CIDFonts не были включены в исходную спецификацию уровня 2 (они были добавлены в дополнение).
Это означает, что устройство ps2write в настоящее время не может выводить CIDFonts, определенные в файле PDF, оно должно преобразовывать их в «что-то другое».».Он выполняет рендеринг фигур глифов в растровые изображения и создает растровые шрифты типа 3, которые затем используются в теле программы PostScript.Это, конечно, далеко не идеально, так как растровые шрифты имеют худшее качество, чем векторные описания форм глифов.Поскольку вы установили рендеринг с разрешением 300 точек на дюйм, это снижает качество растровых изображений глифов, но они должны быть приемлемы для печати на настольном принтере.
Итак, учитывая, что оба файласодержат CIDFonts, почему один намного больше?Это «изюминка» способа создания файлов.Файл test1.pdf содержит шрифты, которые он использует, встроенные в файл PDF, и они встроены как подмножества, то есть каждый шрифт содержит только описания форм глифов, которые он использует.Другой файл использует Arial и Arial-Bold (IIRC), но не включает либо CIDFont.
Шрифты могут адресовать только до 255 глифов, в то время как CIDFonts имеют более или менее неограниченный диапазон.Когда ps2write создает шрифты типа 3 для представления встроенных шрифтов CIDFonts, он не может создать шрифт с полным диапазоном адресов, который был бы у CIDFont, поэтому, если для данного шрифта используется более 255 глифов, он должен создать несколько шрифтов типа 3.Шрифты.
Таким образом, мы заполняем шрифт по ходу, пока не достигнем 255 символов, затем мы начнем новый шрифт.Проблема в том, что если мы затем столкнемся с глифом, который использовался ранее и поэтому был определен в предыдущем шрифте, мы не можем просто переключать шрифты (это ограничение способа работы ps2write).Поэтому мы должны включить этот глиф в шрифт, который мы сейчас создаем.Это означает, что в результате мы получим две копии растрового изображения;один для первого шрифта, который его использует, и второй для второго шрифта.
И это именно то, что здесь происходит.Test1.pdf использует встроенные подмножества, поэтому мы практически никогда не переполняем шрифты типа 3, а выходная программа PostScript содержит ~ 300 растровых изображений для глифов.Test2.pdf несколько раз переполняет ограничение 255, поэтому выходная программа PostScript содержит ~ 2120 растровых изображений для глифов.
С этим ничего не поделаешь, если вы не можете контролировать производство входных файлов PDF,поэтому возникает вопрос: «Это проблема для вас, и если да, то почему?»
[РЕДАКТИРОВАТЬ]
Ну, я сомневаюсь, что размер имеет какое-либо реальное влияние на печать время.PostScript передается на принтер, поэтому он начинает обрабатывать данные сразу после их отправки.
Конечно, сначала преобразование PDF в PostScript является длительным этапом.Предполагая, что ваш принтер (ы) не может печатать PDF напрямую, наиболее очевидный ответ - напечатать каждую страницу в отдельный файл PostScript с использованием синтаксиса -sOutputFile=out%d.ps
.
В целом производительность будет снижена, так как для нескольких файлов требуетсяПри открытии и закрытии пролог будет записан в каждый файл, и не будет возможности повторно использовать ресурсы между страницами, поэтому общие ресурсы должны будут записываться в каждый файл.Это означает, что общий размер всех страниц, записанных в виде отдельных файлов, будет значительно больше, чем общий объем, записанный в виде одного файла largen.
Однако преимущество заключается в том, что вам не нужно обрабатывать все страницы из файла PDF.перед отправкой первой страницы на принтер.Как только страница 1 будет готова, файл out1.ps закроется и будет готов к отправке на принтер, поэтому вы можете начать отправку страницы 1, пока Ghostscript продолжит создавать страницы 2 и далее.