4

我遇到了一个叫做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>

使用princexml转换后:

prince --javascript x.html -o x.pdf

该等式在 pdf 中逐字呈现。

有没有办法使这项工作?

4

1 回答 1

6

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

  1. 首先在 Chrome 等浏览器中渲染您的 html。将整个文档(不是源文档,而是实际呈现的文档)保存到 html 文件中,然后将其用作 Prince 的输入。您可以从浏览器 javascript 控制台获取整个呈现的文档。
  2. 第二种方法是使用像 phantomjs 这样的无头浏览器。另请参阅 https://web.archive.org/web/20150503191319/http://www.lelesys.com/en/media/technology/phantomjs-as-screen-capture-to-generate-image-pdf-files。 html
于 2015-05-31T20:00:23.990 回答