脆蛋白.Fop Apache Fop C#端口

本文关键字:Fop 端口 Apache | 更新日期: 2023-09-27 18:20:22

我使用这个包有一段时间了,它运行得很好。更新到最新的软件包后,代码中断。

使用某些默认构造函数初始化工厂后我得到一个错误:

'org.apache.fop.render.ImageHandlerRegistry' threw an exception.

有人知道配置程序应该是什么样子的,这样它就能再次工作了吗?

    public string GeneratePdf(string foFile, string pdfFile)
    {
        OutputStream os = new BufferedOutputStream(new FileOutputStream(new java.io.File(pdfFile)));
        string ret = "";
        try
        {
            // Factory before update
            FopFactory fopFactory = FopFactory.newInstance();
            // After the update the Factory needs some sort of configuration
            // I tryed with all the constructors but can't get the sample to work.
            FopFactory fopFactory = FopFactory.newInstance(null);
            Fop fop = fopFactory.newFop("application/pdf", os);
            FOUserAgent foUserAgent = fop.getUserAgent();
            javax.xml.transform.TransformerFactory factory = javax.xml.transform.TransformerFactory.newInstance();
            javax.xml.transform.Transformer transformer = factory.newTransformer();
            javax.xml.transform.Source src = new javax.xml.transform.stream.StreamSource(new java.io.File(foFile));
            javax.xml.transform.Result res = new javax.xml.transform.sax.SAXResult(fop.getDefaultHandler());
            transformer.transform(src, res);
            ret = pdfFile;
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            os.close();
        }
        return ret;
    }

脆蛋白.Fop Apache Fop C#端口

问题的实际来源可能不是crispin的升级,而是IKVM 8依赖包的升级,https://stackoverflow.com/a/30887042/993388似乎描述了一个类似的问题。

在我将IKVM从8.x降级回7.x之后,问题就消失了。还要确保从App.Config中删除或调整任何到IKVM 8.x的绑定重定向,否则运行时仍可能尝试获取较新的程序集。

这只是一个变通办法,但这是我目前能找到的最好的办法。

老问题,但这对我有效:

var jFopFactory = org.apache.fop.apps.FopFactory.newInstance(new java.net.URI("."));

我没有尝试过任何图片或其他资源。