有两个PDF,第一个用libharu创建,第二个用PDF::API2创建。如果没有提到坐标,那么内容是一样的。但是第一个pdf比第二个大了四倍。只有一个区别,我发现是字体嵌入的类型显示在文档属性字体选项卡。
In first
Verdana (Embedded Subset)
Type: TrueType
Encoding: Custom
第二
Verdana
Type: TrueType
Encoding: Custom
Actual Font: Verdana
Actual font Type: TrueType
如何处理嵌入的子集?
影响PDF大小的因素有很多。您的问题可能是在PDF创建库处理字体嵌入的方式,特别是:
- "嵌入式子集"是指字体的一部分指标,如字形宽度,被包含在文件中。
- 如果字体没有嵌入,可能是由阅读器从系统加载的,从而减小了文件的大小。
如果 PDF已经很小(只有一页,文字很少,没有图像),嵌入字体可能会对文档的大小产生相对较大的影响。不过,从绝对意义上讲,嵌入式字体不应该占用太多空间。
你应该检查的另一个因素是压缩。PDF主要是纯文本流,但它通常以压缩形式出现。尝试在纯文本编辑器中打开这两个pdf,看看它是可读的还是乱码。乱码(压缩)格式自然会占用更少的空间。
最后,您可以使用许多PDF检查器来检查组成PDF文件的对象,例如这个(我只是在谷歌上搜索了一下,不能保证它会像预期的那样工作)
这是一个老问题,但我有类似的问题。
你设置libharu压缩你的pdf文件了吗?
c++中的,来自文档
HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);