Pdf 为什么几乎相同文档的大小差异如此之大

Pdf 为什么几乎相同文档的大小差异如此之大,pdf,fonts,pdf-generation,embedded-fonts,libharu,Pdf,Fonts,Pdf Generation,Embedded Fonts,Libharu,有两个PDF,第一个是用libharu创建的,第二个是用PDF::API2创建的。如果不提及坐标,则内容相同。但第一个pdf文件的大小是第二个文件的四倍。我发现的唯一区别是文档属性字体选项卡中显示的字体类型 首先 Verdana (Embedded Subset) Type: TrueType Encoding: Custom 秒 Verdana Type: TrueType Encoding: Custom Actual Font: Verdana Actual

有两个PDF,第一个是用libharu创建的,第二个是用PDF::API2创建的。如果不提及坐标,则内容相同。但第一个pdf文件的大小是第二个文件的四倍。我发现的唯一区别是文档属性字体选项卡中显示的字体类型

首先

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++中,从


你不知道linux的pdf检查器吗?我在谷歌上搜索了很多,但它看起来只存在于Mac和Windows上。嵌入的子集指的是只包含文档中使用的字形的字体。字体度量应该始终在文件中。@Jimmy,在重新阅读参考之后,您是对的。(有14种标准字体不需要嵌入,但Verdana不是其中之一。)太长了,我不记得了,但是+1)
HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);