FPDF.php的文件大小比TCPDF.php小20倍.为什么


FPDF.php is ~20 times smaller filesize than TCPDF.php? Why?

我知道有很多关于这两个的帖子,但我想我要解决一个明显的问题。我们的一个设计师最近给我发了几个已经绑定了TCPDF的文件,因为他的一个朋友说它"更好"。

在过去,我们在PHP中使用FPDF生成所有的PDF,但马上我注意到一个巨大的明显的区别:

fpdf.php文件大小:46KB

tcpdf.php文件大小:996 KB

注意:上面的文件大小是实际的php文件,而不是生成的PDF文件。

我真的没有太多的耐心坐下来看看所有两者之间的差异,但似乎不值得为了巨大的文件差异而切换。大多数人似乎真的很喜欢TCPDF,但这是怎么回事?

主要问题

为什么大小不同,我是否应该担心我的服务器每天必须加载一个1MB的文件数百或数千次,而50KB的文件几乎可以完成相同的事情?我是不是说我的PDF文件在这里更大。PHP脚本本身的文件大小为1MB到40Kb。

我避免TCPDF,因为它的许可证不友好(您必须在生成的PDF文档中保持链接+徽标完整)。(注意:似乎许可证已经改变,现在是标准的LGPLv3: http://www.tcpdf.org/license.php)

也就是说,通常导致文件大小变大的原因是嵌入字体。您可以通过几种不同的方式指定字体:

  • 指定它们并且不嵌入它们(但是,最小的尺寸可能无法正确显示文本)
  • 完全嵌入它们(FPDF已经支持这个)
  • 只嵌入用于
  • 的部分字符

第一个选项产生最小的文件-我猜这就是你使用的FPDF。请注意,您的PDF在不同的系统上可能显示不同。

第二个选项生成最大的文件。既然字体在那里(理论上-我没有这方面的经验)可以编辑文件并添加相同字体的文本。

第三个选项是在大多数情况下应该使用的选项,然而,它是最难在库中实现的,核心FPDF不支持它(TFPDF支持)。它只嵌入使用的字形,所以它产生的跨平台pdf非常小。

几年前TCPDF不支持第三个选项(然而,现在可能已经改变了)。正如我所提到的,核心FPDF也不支持它——然而,MPDF和TFPDF支持它(我在许多项目中成功地使用过)。

顺便说一句,我不使用TCPDF的另一个原因是Asani先生(开发人员)的不友好和不帮助的态度,与FPDF/MPDF/TFPDF社区(Oliver, Ian,…)在FPDF论坛上的帮助形成对比。在他承认TCPDF不支持部分字体嵌入之前,在论坛上进行了2周的通信。然而,对我来说,执照才是真正的致命伤。

所以,回答你的问题:你可以通过不嵌入字体来使TCPDF产生更小的文件。然而,许可证应该是从它切换的主要原因。:)

我花了一点时间比较这两个来源。

fpdf几乎没有注释。

tcpdf有更多的方法,但也有完整的phpdoc类注释块,每个参数和用法的解释和html格式的示例在每个方法和属性之前。

请注意,TCPDF许可证上的"您不能从生成的PDF文档中删除任何TCPDF版权声明或链接"这句话仅指不可见链接(元数据),而不是指出现在默认示例中的标头徽标和链接。这意味着用TCPDF生成的文档不包含任何干扰文档布局的可见工件。

然后,回答你的问题,文档大小取决于你正在使用的FPDF中不存在的新功能。如果你不需要一些功能,你想减少文档的大小,然后禁用Unicode,只使用核心字体,如helvetica和应用其他提示http://www.tcpdf.org网站

TCPDF比FPDF包含数百个功能,这就是它更大(更好)的原因。与TCPDF及其功能相比,FPDF是一个非常原始的库。