【问题标题】:PhantomJS render PDF result is huge > 25mb. Print from web < 1mb. What am I doing wrong?PhantomJS 渲染 PDF 结果是巨大的 > 25mb。从网络打印 < 1mb。我究竟做错了什么?
【发布时间】:2015-08-04 18:11:10
【问题描述】:

我们正在从使用 PHP/jQuery 构建的旧网站转换为 Angular JS。我们正在使用 PhantomJS 将报告呈现为 pdf。旧网站做得很好,所有报告都在 2 mb 以下。新站点将报告的大小提高了 10 倍。当我从 Chrome 打印 pdf 时,结果在一个兆之下。我们已经尝试使用 ghostscript 来压缩结果,但它几乎没有减少十分之一。在 Acrobat 中查看生成的大 pdf 时,一切都是图像,它解释了大小。问题是,我不知道为什么一切都呈现为图像。我完全迷惑了。

【问题讨论】:

    标签: pdf printing phantomjs render


    【解决方案1】:

    虽然我希望您能找到一个快速的解决方案(例如,尝试更改 PhantomJS 虚拟屏幕大小),但另一种选择是更直接地构建 pdf,例如使用 TCPDF(免费,大量文档)。然后就可以更直接的控制pdf了,不需要PhantomJS。

    似乎问题出在 PhantomJS 2 上,它关闭了服务器的 DPI 设置。您可以尝试使用较旧的 PhantomJS(您是否更改了服务器?)。或者试试这个:

    page.dpi = 96.0;
    

    并在您的报告中尝试不同的最小宽度尺寸

     { min-width: 1200px; }
    

    关注此问题以获取更新: https://github.com/ariya/phantomjs/issues/12685

    【讨论】:

    • “尝试改变 PhantomJS 的虚拟屏幕尺寸”你会怎么做呢?
    • @ArtjomB。看起来你并不孤单。查看编辑后的帖子和链接
    • 我很想采用一种解决方案来更具体地构建 pdf,但这将是一项艰巨的任务。真正的问题是:为什么 PhantomJS 渲染的是图像而不是文本?
    • @jbaddley 你改过css吗?也许某些 css3 不能被 pdf 渲染成图像。
    • @AwokeKnowing 是的,很多 css 已经改变。我只是想知道css可能会这样做。我要拔头发了!
    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2011-06-25
    • 2019-12-23
    • 2014-06-15
    • 1970-01-01
    相关资源
    最近更新 更多