почему мой libharu pdf негабарит с изображениями .png?

Я создаю PDF, используя libharu в C ++ (скомпилированный как .cgi), который имеет изображения .png.
Код в порядке, но мои PDF-файлы смехотворно завышены.
Каждая страница содержит одно изображение размером около 30 КБ и около 4 символов текста системным шрифтом libharu. Если я открою 20-страничный выходной файл размером 25 Мб и «напечатаю» его в файле в моей операционной системе, он станет размером около 256 Кбайт без видимых изменений в изображениях.

Я думаю, что проблема связана с libharu, потому что этот парень тоже это видит, Вот. Он использует php, libharu как скомпилированный .cgi. (мой код C ++ также скомпилирован .cgi, связанный с libharu).

Другой парень здесь переполнение стека также видел проблемы с размером с libharu, но его проблема не упоминает ничего общего с .png, поэтому он может быть не связан.

Код для справки:

WorkingGraphic = HPDF_LoadPngImageFromMem  (    *gPdfPtr,
PngAssets[AssetIndex],  //Image data ptr
PngSizes[AssetIndex]);  //data length//Render Appropriate
HPDF_Page_DrawImage  (*BlitParams->page,
WorkingGraphic,
BlitParams->OutputRect->X,
BlitParams->OutputRect->Y,
BlitParams->OutputRect->Width,
BlitParams->OutputRect->Height);

Кто-нибудь знает, как управлять libharu, чтобы он создавал PDF-файлы разумного размера при использовании изображений .png?

3

Решение

Да, я не знаю, как удалить вопрос, но, возможно, эта информация будет полезна для других в любом случае.

Я мог иметь ту же проблему, что и этот парень Вот где я продублировал этот ответ.

Мне нужно было включить сжатие .pdf, чего я не сделал.

Документация ссылка на сайт

Код C:

HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);

Это потому, что я не провел достаточно исследований, чтобы знать, что формат .pdf изначально не поддерживает .png, или если он был обновлен для этого, libharu по-прежнему нет. Таким образом, эта опция говорит libharu использовать zlib для сжатия всех файлов, включая ваши изображения.

Реализация не идеальна (вы все равно увидите разницу в размере, если вы заархивируете свой вывод .pdf), но это приемлемо для моего варианта использования.

1

Другие решения

Если вам не нужно полноразмерное изображение в PDF, вы можете уменьшить изображение до миниатюры с помощью API GDI +, равного по размеру с тем размером, который вы хотите, чтобы изображение отображалось в PDF.

Сохраните масштабированный PNG во временном файле и передайте миниатюру PNG в Haru PDF. Это уменьшит размер файла PDF.

Изображение будет пикселизировано, когда зритель увеличит масштаб.

0

По вопросам рекламы [email protected]