我正在使用C++中的libharu(编译为.cgi)创建具有.png图像的pdf。
该代码很好,但我的pdf却异常大。
每个页面以libharu的系统字体显示一张大约30kb的图像和大约4个文本字符。如果我打开一个20页的25mb输出文件,并将其“打印”到操作系统中的文件中,它将变为256kb左右,而图像没有可见变化。

我认为问题与libharu有关,因为这个人也知道了,here。他使用的是PHP,所以libharu作为已编译的.cgi。 (我的C++代码也是编译的.cgi,链接到libharu)。

另一个人here on stack overflow也已经看到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,以便在使用.png图像时创建合理大小的pdf?

最佳答案

是的,我不知道如何删除问题,但无论如何此信息对其他人还是有用的。

我可能和这个here同学有同样的问题,在这里我重复了这个答案。

我需要做的是启用.pdf压缩功能,而我没有做过。

文档link

C代码:

HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);

这是因为我没有做足够的研究来知道.pdf格式本身并不支持.png,或者如果已经对其进行了更新,而libharu仍然不支持。因此,此选项告诉libharu使用zlib压缩所有可能的压缩文件,包括图像。

实现不是完美的(如果压缩输出.pdf,您仍然会看到大小上的差异),但是对于我的用例是可以接受的。

关于c++ - 为什么我的libharu pdf超大了.png图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18568555/

10-09 02:06