【发布时间】:2017-08-04 18:44:03
【问题描述】:
我花了好几天的时间来研究如何在开源项目Writing 上仅在客户端(使用几个库,如 jsPDF 等)将 MathJax 呈现为 PDF。我尝试了许多不同的选择,但都没有成功。
这是我最近一次尝试中显示问题的代码,基于this answer。
MathJax.Hub.Config({ tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]} });
document.getElementById("getPdf").addEventListener("click", getPdf);
function getPdf() {
var svg = document.getElementById('main').innerHTML;
if (svg)
svg = svg.replace(/\r?\n|\r/g, '').trim();
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height);
canvg(canvas, svg);
var imgData = canvas.toDataURL('image/png');
var doc = new jsPDF('p', 'pt', 'a4');
doc.addImage(imgData, 'PNG', 40, 40, 75, 75);
doc.save('test.pdf');
}
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full"></script>
<script src="https://cdn.rawgit.com/canvg/canvg/master/canvg.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js"></script>
<p id="main">
When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
</p>
<button id="getPdf">Get PDF</button>
问题:
如何仅在客户端将 HTML + MathJax 内容呈现为 PDF?
【问题讨论】:
-
注意:cdn.mathjax.org 的生命周期即将结束,参见。 mathjax.org/cdn-shutting-down.
标签: javascript pdf svg mathjax jspdf