【问题标题】:Print page in PhantomJS在 PhantomJS 中打印页面
【发布时间】:2012-10-12 13:53:04
【问题描述】:

有什么方法可以打印PhantomJS 中的页面。我想将我的页面传递给 PDF 打印机 (PDFCreator) 以获得漂亮的 PDF 页面(请参阅我的问题 here

我正在使用以下代码,但它不起作用

var page = require('webpage').create(),
address, output, size;

var input = phantom.args[0];
page.open(input, function (status) {
    page.evaluate(function () {
        window.print();
    });
    phantom.exit();
});

【问题讨论】:

  • “不起作用”是什么意思?是否抛出任何错误?我在想尝试从无头浏览器打印永远不会奏效,因为浏览器通常会抛出系统打印对话框,而 PhantomJS 不会看到它......
  • 没有错误,只是没有任何反应。也许您对系统打印对话框的看法是正确的......在这种情况下我该怎么办?
  • 看我的回答。我不知道质量如何,但看起来它有能力......

标签: javascript pdf printing phantomjs


【解决方案1】:

也许这会有所帮助:您需要在 rasterize.js 中设置一个较大的超时时间,以便在您执行 page.render(output) 之前呈现整个文档

另外,您提供的脚本与rasterize.js所做的非常不同,它不会起作用。

【讨论】:

    【解决方案2】:

    看起来像PhantomJS has examples included on its website。其中之一,rasterize.js,表示它展示了如何将 HTML 输出为 PDF。我还没有尝试过,但也许这可能会导致解决方案。

    【讨论】:

    • 我使用过rasterize.js,但它会生成空文档。我的页面很大(PDFCreator 生成 60 页),这是我认为的问题。
    • 您可能需要修改您的问题,包括您尝试过的内容、无效的内容等。否则,人们会浪费时间发布您已经尝试过的答案...
    【解决方案3】:

    我找到了这个要点:https://gist.github.com/boriscy/a0ac26c54f30296949df,它做了看起来很关键的事情:

    page.onLoadFinished = function() {
      page.render(pdf);
      phantom.exit();
    }
    

    我看到的其他示例进行了很大的等待,只是希望在等待结束时文档完成。对我来说,这似乎不太好,因为较大的文档会失败,而较小的文档会比需要的慢。

    【讨论】:

      猜你喜欢
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2014-08-19
      相关资源
      最近更新 更多