看,这可能是一个假问题,如果是的话,我们深表歉意……但是,老实说,我在该主题上发现的所有内容似乎都来自2007年,或者对IE6等提出了特别警告。
设置:
使用数学标记和MathJax在网页中呈现数学的网页(工作正常)。
用户需要能够将其导出到某种doc文件(例如word,PDF等),以分发给不允许/不希望“在系统中”提供页面的校对人员。
问题:
到目前为止,我为将渲染的最终产品提交到某种文档而进行的所有尝试(除了进行用户启动的浏览器打印之外)都显示未渲染的标记,而不是最终产品。
显然,这是由于MathJax库在浏览器中完全可用时呈现页面的方式所致,因为它只是包含JS脚本。没有惊喜。
通过对呈现的页面进行ajax调用,然后将整个html片段发送到第三页,以写出到光盘中,并将其与msword的mime和内容处置标头一起保留,将其保存到光盘中,等等,但渲染不正确-可能是由于将其打包在POST调用中。无论如何,最终要采取很多步骤来获得一个并非十分正确的解决方案。
我猜测答案将是“你做不到”,至少没有使用TeX Live或MikTex等庞大的安装程序之一,并在后端使用Shell调用来完成。 。但是我仍然无法在这些主机上进行安装。
我是否坚持让用户使用“打印为PDF”解决方案?有什么我想念的吗?
谢谢,很高兴在需要的地方充实,但我不能成为第一个尝试这样做的人。
最佳答案
对于PDF,有两种选择,这主要取决于您要投入多少工作。
快速而肮脏的解决方案可能是wkhtmltopdf,但是必须完成specify a wait time才能完成JavaScript渲染-不理想。
PhantomJS需要更多的工作,但可以让您在页面上进行监听,例如,this discussion链接到一个简单的示例。 (实际上有很多基于PhantomJS的工具。)
另一种方法是先使用MathJax-node进行预处理,然后将结果传递给wkhtmltopdf(这样您就不必等待MathJax了)。
对于doc / docx,我认为目前没有任何办法。自然的方法是使用MathJax节点生成MathML,因为Word可以导入MathML。但是从HTML导入时,Word似乎不支持MathML。用MathJax节点生成SVG的情况也一样(但使用SVG时,您将失去编辑等式的能力,因此无论如何都是禁止的)。
Pandoc最终可能会有所帮助。显然,它可以将数学转换为MS Office格式,请参见demo #30。但是从快速测试来看,这似乎不适用于HTML输入。