将包含mathjax标记的html转换为pdf

将包含mathjax标记的html转换为pdf,html,pdf,princexml,Html,Pdf,Princexml,我遇到了一个名为princexml的工具,它可以将html+css漂亮地转换为pdf()。有了它,甚至可以完全使用html+css编写博士论文,并最终获得一个漂亮的pdf输出。但它似乎不能很好地处理mathjax。我想这是因为mathjax部分必须首先在浏览器中渲染 我有一个简单的html文件,如下所示: <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"&

我遇到了一个名为princexml的工具,它可以将html+css漂亮地转换为pdf()。有了它,甚至可以完全使用html+css编写博士论文,并最终获得一个漂亮的pdf输出。但它似乎不能很好地处理mathjax。我想这是因为mathjax部分必须首先在浏览器中渲染

我有一个简单的html文件,如下所示:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>test math</title>
<style type="text/css">
</style>


<script src='http://cdn.mathjax.org/mathjax/latest/MathJax.js' type='text/javascript'>
    MathJax.Hub.Config({
        HTML: ["input/TeX","output/HTML-CSS"],
        TeX: { extensions: ["AMSmath.js","AMSsymbols.js"],
               equationNumbers: { autoNumber: "AMS" } },
        extensions: ["tex2jax.js"],
        jax: ["input/TeX","output/HTML-CSS"],
        tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ],
                   displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
                   processEscapes: true },
        "HTML-CSS": { availableFonts: ["TeX"],
                      linebreaks: { automatic: true } }
    });
</script>

</head>

<body>

$x^2 + y^2 = 1$

</body>
</html>
方程式在pdf中逐字呈现


有没有办法让这一切顺利进行

这是因为princexml还不支持Mathjax用于异步函数的setTimeout方法。有两种解决办法:

  • 首先在浏览器(如Chrome)中呈现html。将整个文档(不是源文档,而是实际呈现的文档)保存到html文件中,然后将其用作prince的输入。您可以从浏览器javascript控制台获取整个呈现文档
  • 第二种方法是使用无头浏览器,如phantomjs。另见

  • 来自未来的注意:cdn.mathjax.org即将结束,请查看迁移提示。
    prince --javascript x.html -o x.pdf