我已经花费了数日时间,试图在客户端上将MathJax渲染为PDF(使用几个库,如jsPDF等)用于开源项目Writing。 我尝试了许多不同的选项,但都没有成功。
这里是一个代码示例,展示了我最新尝试的问题,基于这个答案。
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?