Конвертировать HTML, содержащий разметки mathjax, в pdf

Я сталкивался с инструментом princexml, который может красиво конвертировать html+css в pdf ( см. Это видео). При этом можно даже написать кандидатскую диссертацию, используя полностью html+css, и в итоге получить хороший вывод в формате PDF. Но, похоже, он плохо справляется с матемаксом. Я предполагаю, что это потому, что часть 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.

Есть ли способ сделать эту работу?

1 ответ

Это потому, что princexml еще не поддерживает метод setTimeout, который Mathjax использует для своих асинхронных функций. Есть два обходных пути:

  1. Сначала визуализируйте ваш HTML в браузере, например, в Chrome. Получите весь документ (не исходный, а фактически обработанный документ), сохраненный в html-файле, а затем используйте его в качестве входных данных для принца. Вы можете получить весь визуализированный документ из консоли браузера javascript.
  2. Второй способ заключается в использовании браузера без заголовка, как phantomjs. Смотрите также http://www.lelesys.com/en/media/technology/phantomjs-as-screen-capture-to-generate-image-pdf-files.html
Другие вопросы по тегам