2013-07-31 2 views
1

У нас есть приложение, которое создает динамические PDF-файлы со встроенными шрифтами NMSYS.Сжатие на лету сгенерированных PDF-файлов с внедренными шрифтами

Но этот размер очень большой по сравнению с исходным файлом, имеющим более крупные данные, а затем динамически генерируемые с одинаковыми шрифтами.

Можно ли уменьшить размер такого PDF-файла с помощью php любого скрипта, API или расширения? и почему исходный PDF (не сгенерированный скриптом) более крупного содержимого и одинаковых шрифтов имеет меньший размер?

EDIT

Пример -

file 1

file 2

файл -1 генерируется нашим скриптом это bacically показывает часть информации из файла 2. Есть только 5 страниц в файле -1 и составляет 1,2 МБ, а файл 2 - 158 страниц аналогичной информации, но около 4 МБ.

Почему разница в этом размере?

+0

Является ли исходный файл также PDF-файлом? И можете ли вы разместить пример такого исходного/динамически созданного PDF-файла? Очень сложно сказать, что занимает место в вашем PDF-файле, фактически не имея возможности увидеть его - есть много разных причин, по которым файл PDF может быть больше, чем вы думаете ... –

+0

@David van Driessche: Я загрузил 2 файла и отредактированный пост. Пожалуйста, проверьте и дайте мне знать, если какая-либо другая информация, которую вы хотите от меня. –

ответ

4

Я просмотрел оба файла, и разница в основном связана с шрифтом. Я сохранил оба файла, оптимизированные с помощью Adobe Acrobat XI, - это (может сделать) делает множество оптимизаций, но самое важное отличие (для файла 1) происходит от подмножества шрифтов:

Файл 1: 1,2 МБ до/253 КБ после Файл 2: 4.7 MB до/3.7 MB после

Ваш файл 2 был создан с использованием FrameMaker, который обычно создает довольно чистый PDF (даже если в этом случае использовался очень старая версия Adobe Acrobat Distiller), ваш файл 1 был созданный DomPDF, по-видимому, без подмножества встроенных шрифтов.

Если посмотреть на отчет о ревизии пространство из Acrobat для первого файла:

enter image description here

Вы можете увидеть, что шрифты занимают близко к 96% пространства в файле. Поэтому подмножество шрифта, используемого в этом файле, в основном является вашим единственным вариантом, чтобы сделать его меньше.

Различные библиотеки или приложения имеют различные варианты включения подмножества. Специально для DOMPDF использовать опцию DOMPDF_ENABLE_FONTSUBSETTING для включения Подменит шрифт в PDF-файлах, которые он создает:

def("DOMPDF_ENABLE_FONTSUBSETTING", true); 

Это то встраивает только те символы, фактически используемые в файле PDF, часто (в зависимости от количества текста и фактического шрифта), создавая гораздо меньшие файлы.

(DOMPDF solution добавлено из комментариев, чтобы сделать ответ более полным)

+0

Да, я использую som PDF, можете ли вы объяснить об этом подробнее? как я могу сгенерировать его по-другому? и какое приложение библиотеки я могу использовать для подмножества шрифтов –

+0

Я сделал это, есть опция в файле конфигурации dompdf. DOMPDF_ENABLE_FONTSUBSETTING изменяет значение vale на true. и теперь размер файла уменьшен. Спасибо за вашу помощь. –

+0

Я здесь смущен, ответ на который я должен принять, оба из вас помогли мне разобраться в этом. должен ли я написать свой собственный ответ об изменении настроек в конфигурации DOMPDF? –

2

В файле 1 используется семейство шрифтов TrueType DejaVuSans и они не являются подмножествами. Они берут около 950 килобайт PDF-файла. Остальные - изображения, структуры PDF и т. Д.
В файле 2 используются шрифты TrueType Helvetica, и они являются подмножествами. Они занимают гораздо меньше места. Поскольку весь текст на всех страницах использует почти те же символы, окончательный размер шрифта довольно мал.

+0

Спасибо. Любое предложение, как решить это? какие изменения я должен сделать, чтобы уменьшить размер до первого файла? Пожалуйста, –

Смежные вопросы