[英]How to convert to PDF from XSL-FO with MathML
我正在尝试使用 Apache FOP 2.1 将带有 MathML 的 XSL-FO 文件转换为 PDF,但我收到一些警告和错误。
如何使用 FOP 将 MathML 打印为 PDF?
我的Test.fo
文件:
<?xml version="1.0" encoding="iso-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns="http://www.w3.org/1998/Math/MathML">
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body" font="12pt Times">
<fo:block font-size="1.5em" font-weight="bold" role="html:p">
<fo:instream-foreign-object>
<math display="inline">
<mrow>
<mi>A</mi>
<mo>=</mo>
<mi>Ï€</mi>
<msup>
<mi>r</mi>
<mn>2</mn>
</msup>
</mrow>
</math>
</fo:instream-foreign-object>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
我得到的输出:
$ fop test.fo 123.pdf
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }math”( fo:instream-foreign-object}.(见位置 13:72)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }mrow”(数学}.(见位置 14:13)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }mi”( mrow}.(见位置 15:12)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }mo”( mrow}.(见位置 16:12)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }mi”( mrow}.(见位置 17:12)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }msup”( mrow}.(见位置 18:14)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }mi”( msup}.(见位置 19:13)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 警告:遇到未知格式对象“{ http://www.w3.org/1998/Math/MathML }mn”( msup}.(见位置 20:13)
2016 年 9 月 30 日下午 1:45:12 org.apache.fop.events.LoggingEventListener processEvent 严重:无法确定流内外部对象的内在维度。 (见位置 12:33)
2016 年 9 月 30 日下午 1:45:13 org.apache.fop.events.LoggingEventListener processEvent INFO:呈现页面 #1。
输出 PDF 为空。
基于 lfurini 的回答,Ubuntu 14.04 上的 fop 安装无法识别/usr/share/fop (或某些子文件夹 /lib)中 jeuclid 的 jar 文件(版本 3.1.9)。 我能够通过修改/usr/bin/fop让它工作,它实际上只是一个 shell 脚本包装器。 修改部分如下:
...
find_jars /usr/share/fop/fop-hyph.jar
find_jars /usr/share/fop/jeuclid-core-3.1.9.jar
find_jars /usr/share/fop/jeuclid-fop-3.1.9.jar
find_jars fop
...
有了这个,我就可以编译上面的文件而没有问题
fop -fo test.fo -pdf test.pdf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.