java - Javax : ErrorListener not called when transforming a fo file into a pdf

标签 java xslt error-handling saxon apache-fop

我正在研究一个利用Apache FOP的Servlet。

输入的.fo文件将转换为PDF文件。一些输入文件引用
外部图像;如果这些都不可用,则变压器会给出
像这样的消息:

07.07.2013 22:53:01 org.apache.fop.fo.flow.ExternalGraphic bind
SCHWERWIEGEND: Image not available: sunset.jpg

为了处理这种情况,我实现了一个ErrorListener:
import javax.xml.transform.ErrorListener;

class MyErrorListener implements ErrorListener {
    int warnings;
    int fatals;
    int errors;
    StringBuilder sb = new StringBuilder();

    @Override
    public void warning(TransformerException e) throws TransformerException {
        warnings++;
        sb.append(e.getMessageAndLocation() + "\n");;
    }

    @Override
    public void fatalError(TransformerException e)
            throws TransformerException {
        fatals++;
        sb.append(e.getMessageAndLocation() + "\n");;
    }

    @Override
    public void error(TransformerException e) throws TransformerException {
        errors++;
        sb.append(e.getMessageAndLocation() + "\n");;
    }

    String getMessages() {
        return sb.toString();
    }
}

在转换开始之前,此类的一个实例已附加到转换器:
TransformerFactory tFactory = TransformerFactory.newInstance();
transformer = tFactory.newTransformer();
MyErrorListener el = new MyErrorListener();
transformer.setErrorListener(el);
transformer.transform(new StreamSource(tempFile2),
    new SAXResult(fop.getDefaultHandler()));

但是不要调用任何已实现的错误,警告或fatalError方法
在侦听器中,转换器不断将错误报告给stderr。

我什至尝试将监听器附加到工厂:
tFactory.setErrorListener(el);

但没有成功。

知道我的代码有什么问题吗?还是缺少的图像低于报告水平?

最佳答案

该错误来自XSL-FO处理器,而不是XSLT处理器。撒克逊人知道您的ErrorListener,但不知道该错误。 FOP知道错误,但不知道ErrorListener。

关于java - Javax : ErrorListener not called when transforming a fo file into a pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17516601/

相关文章:

java - 将 SVN 与 CruiseControl 一起使用?

java - 使用 CharAt( ) 和 length( ) 将二进制转换为十进制

xml - 按键 : selecting last child of a preceding-sibling node

error-handling - 如何使dicom文件头不可读

java - 带时间戳的 JSF

java - 从数据库中检索不同尺寸的图像

java - JAXP XSLT 转换器默认使用错误的实现

python - 在Python中使用XPath提取属性值

python - 子进程命令的实时输出

python - 索引错误 : too many indices for array