使用JEuclid在PDF(XSL-FO)中生成公式

时间:2019-03-18 07:17:40

标签: xslt xsl-fo apache-fop mathml

我正在尝试将xml转换为包含公式的pdf。我已经添加了果酱罐来处理配方奶。除公式外,整个xml均已正确转换。在有公式的地方,我变得一片空白。

public class PDFCreation {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        PDFCreation pdfCreation = new PDFCreation();
        try {
            pdfCreation.convertToPDF("SPE.xsl", "IPTC-19048-MS.xml", "IPTC-19048-MS.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void convertToPDF(String xsl, String xml, String pdf) throws IOException, FOPException, TransformerException {
        File xsltFile = new File(xsl);
        StreamSource xmlSource = new StreamSource(new File(xml));
        FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
        FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
        OutputStream out;
        out = new java.io.FileOutputStream(pdf);
        try {
            Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer(new StreamSource(xsltFile));
            Result res = new SAXResult(fop.getDefaultHandler());
            transformer.transform(xmlSource, res);
        } finally {
            out.close();
        }
    }
}

编辑: 根据要求添加控制台日志

  

2019年3月18日下午12:58:52 org.apache.fop.events.LoggingEventListener   processEvent警告:以下功能未实现   Apache FOP,尚未:table-layout =“ auto”(在fo:table上)(无上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent警告:   Apache FOP尚未实现以下功能:   table-layout =“ auto”(在fo:table上)(无可用的上下文信息)3月18日,   2019 12:58:52 PM org.apache.fop.events.LoggingEventListener   processEvent SEVERE:找不到图像。 URI:../ Logo / IPTC_Logo.tif。 (没有   上下文信息可用)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ Logo / Separator.jpg。 (没有可用的上下文信息)3月   18,2019 12:58:52 PM org.apache.fop.events.LoggingEventListener   processEvent SEVERE:找不到图像。 URI:   ../IPTC-19048-MS_fig_01.tif。 (没有上下文信息可用)2019年3月18日   下午12:58:52 org.apache.fop.events.LoggingEventListener processEvent   警告:Apache FOP尚未实现以下功能:   table-layout =“ auto”(在fo:table上)(无可用的上下文信息)3月18日,   2019 12:58:52 PM org.apache.fop.events.LoggingEventListener   processEvent警告:以下功能未实现   Apache FOP,尚未:table-layout =“ auto”(在fo:table上)(无上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ IPTC-19048-MS_fig_02.tif。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent警告:   Apache FOP尚未实现以下功能:   table-layout =“ auto”(在fo:table上)(无可用的上下文信息)3月18日,   2019 12:58:52 PM org.apache.fop.events.LoggingEventListener   processEvent SEVERE:找不到图像。 URI:   ../IPTC-19048-MS_fig_03.tif。 (没有上下文信息可用)2019年3月18日   下午12:58:52 org.apache.fop.events.LoggingEventListener processEvent   严重:找不到图片。 URI:../ IPTC-19048-MS_fig_04.tif。 (无上下文   可用信息)Mar 18,2019 12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ IPTC-19048-MS_fig_05.tif。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ IPTC-19048-MS_fig_06.tif。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ IPTC-19048-MS_fig_07.tif。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent警告:   Apache FOP尚未实现以下功能:   table-layout =“ auto”(在fo:table上)(无可用的上下文信息)3月18日,   2019 12:58:52 PM org.apache.fop.events.LoggingEventListener   processEvent警告:以下功能未实现   Apache FOP,尚未:table-layout =“ auto”(在fo:table上)(无上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ IPTC-19048-MS_fig_08.tif。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ IPTC-19048-MS_fig_09.tif。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent严重:图像   未找到。 URI:../ IPTC-19048-MS_fig_10.tif。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent警告:字体   找不到“ Arial,正常700”。替换为“ any,normal,700”。三月   18,2019 12:58:52 PM org.apache.fop.events.LoggingEventListener   processEvent警告:找不到字体“ Symbol,normal,700”。替代   与“符号,正常,400”。三月18,2019 12:58:52下午   org.apache.fop.events.LoggingEventListener processEvent INFO:一个   fo:block(无上下文信息可用)比可用房间宽   内联进度维度。调整缩进基于   过度约束的几何规则(XSL 1.1,ch.5.3.4)2019年3月18日   下午12:58:52 org.apache.fop.events.LoggingEventListener processEvent   警告:fo:block第1行的内容超出了其中的可用区域   内联前进方向5880毫点。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:一个   fo:block(无上下文信息可用)比可用房间宽   内联进度维度。调整缩进基于   过度约束的几何规则(XSL 1.1,ch.5.3.4)2019年3月18日   下午12:58:52 org.apache.fop.events.LoggingEventListener processEvent   警告:fo:block第1行的内容超出了其中的可用区域   内联前进方向5880毫点。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:一个   fo:block(无上下文信息可用)比可用房间宽   内联进度维度。调整缩进基于   过度约束的几何规则(XSL 1.1,ch.5.3.4)2019年3月18日   下午12:58:52 org.apache.fop.events.LoggingEventListener processEvent   警告:fo:block第1行的内容超出了其中的可用区域   内联前进方向5880毫点。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:一个   fo:block(无上下文信息可用)比可用房间宽   内联进度维度。调整缩进基于   过度约束的几何规则(XSL 1.1,ch.5.3.4)2019年3月18日   下午12:58:52 org.apache.fop.events.LoggingEventListener processEvent   警告:fo:block第1行的内容超出了其中的可用区域   内联前进方向5880毫点。 (没有上下文信息   有空)2019年3月18日12:58:52 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:一个   fo:block(无上下文信息可用)比可用房间宽   内联进度维度。调整缩进基于   过度约束的几何规则(XSL 1.1,ch.5.3.4)2019年3月18日   下午12:58:52 org.apache.fop.events.LoggingEventListener processEvent   警告:fo:block第1行的内容超出了其中的可用区域   内联前进方向5880毫点。 (没有上下文信息   有空)2019年3月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第1页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第2页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第3页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第4页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第5页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第6页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第7页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第8页。 2019三月18日12:58:53 PM   org.apache.fop.events.LoggingEventListener processEvent INFO:呈现   第9页。

当我阅读JEuclid处理它时,我还没有在xsl中为公式写任何东西。

1 个答案:

答案 0 :(得分:0)

您在fo:root标记上是否具有mathml命名空间?像这样:

<fo:root xmlns: fo="http://www.w3.org/1999/XSL/Format" xmlns:mathml="http://www.w3.org/1998/Math/MathML">