我正在使用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/