2016-04-03 57 views
0

在于,包括基于浏览器的可视化编辑器项目的一部分,我用fabric.js创建SVG文件,然后将其转换为PDF文件。重用图形资产PDF文件

在一些情况下,最终结果是具有贯穿其中casues实质和不必要的文件膨胀,导致非常大的PDF文件的文件中出现多次的同一图像生成的PDF文件。

在SVG上,这可以通过使用单个<image>元素并将其重复使用<use>元素(如我的previous question中的回答)轻松修复。使用Inkscape将SVG转换为PDF格式,并且Inkscape似乎没有“获得提示”,因为它会为文档中的每个外观重新嵌入重复的图像。

Smallpdf.com的PDF压缩机工具似乎可以解决这个问题,但我不明白它究竟是如何做到这一点;我也不能使用Inkscape或我知道的任何其他工具来复制此优化。

是否有这个技术的名称,或者更好的方法是我自己复制这个?我读到PDF中的XObject是适当的工具,但我不明白如何自己实现它们,也不能找到任何实例。

+0

?我将添加一个通用答案来解释如何在PDF中使用XObject(类似于SVG),但知道这是否适用于您的文件需要查看文件的实际创建方式。 –

+0

@DavidvanDriessche谢谢,我会尽快准备并发布一个例子。 – Pepe

回答

1

一般来说,PDF确实通过使用XObjects以非常类似的方式提供了与SVG相同的功能。

的x对象可以被用来定义图像或一组图形操作人员,否则将在网页内容的一部分的。它获得一个名称和它自己的内容流,并拥有自己的资源,使它成为一个独立的内容。然后可以使用“Do”运算符将此XObject包含在页面内容中,这与您在SVG中用“use”描述的非常相似。

从理论上讲,一个X对象可以一次在PDF文件中出现,然后在整个文件中多次使用而不会显著增加PDF文件的文件大小。这是否发生取决于PDF创建库或PDF库的优化功能。

例如,Adobe PDF库能够优化PDF文件,以便优化XObject中发生的重复内容 - 然后保留XObject的单个副本,并且在页面描述中每次使用该XObject都指向该单个目的。我已经看到了一些例子,其中文件大小从多个千兆字节的数据减少到可变数据场景下的不到兆字节。

为了使用它,你需要:

  • 一个PDF文件,其中重复的内容其实包含在X对象
  • 一个PDF生成器或处理器谁能够正确地创建和聪明足以优化PDF文件,你有这样的一个例子PDF文件来利用此