脆蛋白.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;
}
问题的实际来源可能不是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("."));
我没有尝试过任何图片或其他资源。