Php 动态压缩生成的带有嵌入字体的PDF文件

Php 动态压缩生成的带有嵌入字体的PDF文件,php,pdf,compression,size-reduction,Php,Pdf,Compression,Size Reduction,我们有一个应用程序生成嵌入NMSYS字体的动态PDF文件 但与原始文件相比,它的大小非常大,原始文件具有更大的数据,然后动态生成相同的字体 是否可以使用php脚本、API或扩展来减小此类PDF的大小?为什么内容更大、字体相同的源PDF(不是脚本生成的)大小更小 编辑 范例- 文件-1是由我们的脚本生成的,它基本上显示了文件2中的一段信息。文件-1只有5页,大小为1.2MB,文件2有158页类似的信息,但大约4MB 为什么会有这种尺寸差异 文件1使用TrueType DejaVuSans字体系

我们有一个应用程序生成嵌入NMSYS字体的动态PDF文件

但与原始文件相比,它的大小非常大,原始文件具有更大的数据,然后动态生成相同的字体

是否可以使用php脚本、API或扩展来减小此类PDF的大小?为什么内容更大、字体相同的源PDF(不是脚本生成的)大小更小

编辑

范例-

文件-1是由我们的脚本生成的,它基本上显示了文件2中的一段信息。文件-1只有5页,大小为1.2MB,文件2有158页类似的信息,但大约4MB


为什么会有这种尺寸差异

文件1使用TrueType DejaVuSans字体系列,它们不是子集。它们占用了大约950kb的PDF文件。其余的是图像、PDF结构等。

文件2使用TrueType Helvetica字体,它们是子集。它们占用的空间要小得多。由于所有页面上的所有文本使用几乎相同的字符,因此最终的字体大小非常小。

文件1使用TrueType DejaVuSans字体系列,它们不是子集。它们占用了大约950kb的PDF文件。其余的是图像、PDF结构等。

文件2使用TrueType Helvetica字体,它们是子集。它们占用的空间要小得多。因为所有页面上的所有文本都使用几乎相同的字符,所以最终的字体大小非常小。

我查看了这两个文件,差异确实主要与字体有关。我保存了两个优化的文件,其中Adobe AcROAT席XI -(可以做)做了大量的优化,但是最重要的区别(文件1)来自字体设置:

文件1:1.2MB之前/253KB之后 文件2:4.7 MB之前/3.7 MB之后

您的文件2是使用FrameMaker创建的,FrameMaker通常生成非常干净的PDF(即使在本例中使用了非常旧的Adobe Acrobat Dilleter版本),您的文件1是由DomPDF生成的,显然没有对嵌入字体进行子集设置

如果您在Acrobat外查看第一个文件的空间审核报告:

您可以看到字体占据了文件中近96%的空间。因此,将此文件中使用的字体子集基本上是使其变小的唯一选择

不同的库或应用程序有不同的选项来启用子集设置。特别是对于DOMPDF,请使用选项DOMPDF_ENABLE_fontsubseting在其创建的PDF文件中启用字体子集设置:

def("DOMPDF_ENABLE_FONTSUBSETTING", true);
然后只嵌入PDF文件中实际使用的字符,通常(取决于文本量和实际字体)创建更小的文件


(从评论中添加了DOMPDF解决方案,以使答案更完整)

我查看了这两个文件,其中的差异实际上主要与字体有关。我保存了两个优化的文件,其中Adobe AcROAT席XI -(可以做)做了大量的优化,但是最重要的区别(文件1)来自字体设置:

文件1:1.2MB之前/253KB之后 文件2:4.7 MB之前/3.7 MB之后

您的文件2是使用FrameMaker创建的,FrameMaker通常生成非常干净的PDF(即使在本例中使用了非常旧的Adobe Acrobat Dilleter版本),您的文件1是由DomPDF生成的,显然没有对嵌入字体进行子集设置

如果您在Acrobat外查看第一个文件的空间审核报告:

您可以看到字体占据了文件中近96%的空间。因此,将此文件中使用的字体子集基本上是使其变小的唯一选择

不同的库或应用程序有不同的选项来启用子集设置。特别是对于DOMPDF,请使用选项DOMPDF_ENABLE_fontsubseting在其创建的PDF文件中启用字体子集设置:

def("DOMPDF_ENABLE_FONTSUBSETTING", true);
然后只嵌入PDF文件中实际使用的字符,通常(取决于文本量和实际字体)创建更小的文件


(从注释中添加DOMPDF解决方案以使答案更完整)

原始文件也是PDF文件吗?你能发布这样一个原始/动态生成的PDF文件的示例吗?在看不到PDF文件的情况下,很难说什么占据了你的PDF文件的空间-PDF文件比你想象的要大有很多不同的原因…@David van Driessche:我上传了两个文件并编辑了这篇文章。请检查并让我知道您是否需要我提供任何其他信息。原始文件也是PDF文件吗?你能发布这样一个原始/动态生成的PDF文件的示例吗?在看不到PDF文件的情况下,很难说什么占据了你的PDF文件的空间-PDF文件比你想象的要大有很多不同的原因…@David van Driessche:我上传了两个文件并编辑了这篇文章。如果您需要我提供任何其他信息,请检查并告知我。谢谢。有什么建议可以解决这个问题吗?我应该做哪些更改以将大小减小到第一个文件?请原谅我。有什么建议可以解决这个问题吗?我应该做哪些更改以将大小减小到第一个文件?请看我使用的是som PDF,你能解释一下吗?我如何以不同的方式生成它?我可以使用哪个库应用程序来子集fontsI已经这样做了dompdf配置文件dompdf_ENABLE_fontsetting中有一个选项将其值更改为true。现在文件大小减小了。谢谢你们的帮助。我在这里感到困惑,我应该接受哪一个答案。你们两个帮助我解决了这个问题。关于在DOMPDF config中更改设置,我是否应该写下我自己的答案?我认为最重要的是将这些信息提供给其他人。因此,要么编写您自己的答案,要么简单地编辑现有答案中的一个,以包含您在DOMPDF中所做的操作……以下是解决方案-如果使用DOMPDF,那么我们可以将属性DOMPDF_ENABLE_fontsubseting设置为all