减少浏览器中已打印PDF的文件大小

时间:2018-08-31 10:20:39

标签: javascript pdf firefox canvas printing

我需要我的Web应用程序(基于反应)来生成pdf文件。该文件将包含带有生成内容的文本,表格和画布。

我决定使用浏览器的内置打印功能来实现此目的(我也尝试过pdfkitreact-pdf,但决定使用html和css进行布局效果最佳)。

问题在于生成的PDF文件相对较大(超过10MB,而大约1MB是可以接受的最大值)。

我确实尝试通过使用canvas.toDataURL('image/jpeg', 0.8)生成JPEG并使用dataURL而不是画布来减小大小。

这确实会减小Chrome和Safari中的文件大小,但不会减小Firefox中的文件大小。

使用Inkscape导入PDF,然后导出为SVG,然后使用文本编辑器进行检查(请告诉我,这是一个更简单的工作流程),我发现Chrome和Safari确实嵌入了JPEG,但是Firefox使用图像嵌入为PNG文件。

有什么办法可以在Firefox中更改此行为?我看到的唯一另一种选择是使用pdfkit之类的库从Javascript生成PDF文件-这将以易于自定义布局为代价。

最小示例:

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <img src="https://upload.wikimedia.org/wikipedia/commons/a/a4/Forum_romanum_1880.jpg" />
  </body>
</html>

打印为PDF时,使用Google Chrome浏览器不到200KB,使用Firefox则超过1MB

1 个答案:

答案 0 :(得分:0)

如果您打印自己的网络,请使用无头Chrome并将图片尺寸缩小here