【问题标题】:Convert html containing mathjax markups to pdf将包含 mathjax 标记的 html 转换为 pdf
【发布时间】:2023-03-06 16:36:01
【问题描述】:

我遇到了一个叫做princexml的工具,它可以很好地将html+css转换成pdf(see this video)。有了这个,甚至可以完全使用 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 中逐字呈现。

有没有办法让它工作?

【问题讨论】:

标签: html pdf princexml


【解决方案1】:

这是因为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

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 1970-01-01
    • 2011-12-23
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2016-09-04
    相关资源
    最近更新 更多