【问题标题】:html to pdf including MathJax transformationhtml 到 pdf 包括 MathJax 转换
【发布时间】:2014-10-02 15:13:34
【问题描述】:

如何创建一个包含 html (DOM) 内容的 pdf,以说明 html 的 css styles? HTML 中有 MathJax javascript 渲染公式。我希望 pdf 显示公式,因为它们在使用 MathJax 的浏览器中可见。 此外,HTML 包含的图片很少。
哪个开源 java 库有助于从 html 内容创建这样的 pdf? 我查看了Apache PdfBox,但没有找到解决方案。 解决方案必须是开源库才能用于商业应用。

编辑 DOM 内容是在服务器端动态生成的,不会推送到浏览器。
FlyingSaucer 接近我需要的内容。但是,这不支持 java 脚本,即带有 MathJax 的 html 不能(正确)转换为 pdf。

【问题讨论】:

    标签: pdf-generation pdfbox mathjax


    【解决方案1】:

    有多种基于 WebKit 支持 JavaScript 的 PDF 渲染器。我发现最好的是 PhantomJS 的屏幕截图功能。

    http://phantomjs.org/screen-capture.html

    不过,您必须编写一些代码,并确保在 JS 完成操作之前不要抓取屏幕。


    更新
    这是一个非常简单的示例,它从标准输入读取 HTML 并将 PDF 文件保存到磁盘:

    // render.js
    var page = new WebPage();
    page.content = require("system").stdin.read();
    
    setTimeout( function(){
        page.render( 'export.pdf' );
        phantom.exit(0);
    }, 100 ); // <- wait for JS
    

    您可以从您正在使用的任何服务器端运行时执行此操作,只要它可以执行 shell。要从命令行使用静态文件对其进行测试,您可以:

    ~/bin/phantomjs render.js < sample.html
    

    【讨论】:

    • 谢谢。 DOM 内容是在服务器端动态生成的,不会推送到浏览器。
    • 它不需要浏览器。这就是重点。您只需将 HTML 通过管道传输给它,它就会返回一个 PDF 文件
    • 酷。我将探索它的 Java 等价物。我的应用程序运行时是 JVM。 (部署到 Tomcat 的 Web 应用)
    猜你喜欢
    • 2023-03-06
    • 2017-02-13
    • 2011-12-23
    • 2020-10-02
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多