在.NET应用程序中使用ApacheFOP v1.0

Cla*_*oit 10 .net ikvm apache-fop

有没有人成功地将Apache FOP v1.0库编译成.NET DLL?我正在使用http://onjava.com/pub/a/onjava/2004/08/18/ikvm.html上的IKVM语法; 但是,编译的DLL似乎不完整.例如,我无法将FopFactory对象实例化为:

using org.apache.fop.apps;

namespace Utils
{
     public class PdfRender
     {
          public void Render()
          {
            FOUserAgent foUserAgent = fop.getUserAgent();
            FopFactory fopFactory = FopFactory.newInstance();
          }
     }
}
Run Code Online (Sandbox Code Playgroud)

Cla*_*oit 8

(由FOP用户组的人提供)

先决条件:已安装IKVM 0.44.0.5.

  1. http://xmlgraphics.apache.org/fop/1.0/index.html#download下载FOP 1.0
  2. 将所有JAR文件复制到 C:\Fop\Build\
  3. 打开命令提示符并运行以下命令: ikvmc -target:library -reference:IKVM.OpenJDK.Core.dll -recurse:C:\Fop\Build\\*.jar -version:1.0 -out:C:\Fop\fop.dll
  4. 在Visual Studio项目,添加引用fop.dll,IKVM.OpenJDK.*.dllIKVM.Runtime.dll


小智 6

我尝试了ClayB建议的方法,没有任何成功.

我使用了IKVM 0.44和0.46与FOP 0.95和1.0的组合.但没有任何效果!有一些java库缺失并导致错误.还发生了.net异常:无法在System.Security命名空间中加载类型.我甚至尝试按照Avik Sengupta的建议将每个.jar文件编译成dll,网址为http://onjava.com/pub/a/onjava/2004/08/18/ikvm.html,但是卡在了lib\batik-上所有-1.7.jar.除非有人有任何进一步的工作,否则我相信这种方法不再适用于最新的套件.

但是,我找到了一种不同的方法,允许人们从.net调用FOP.我希望这会对某人有所帮助:

try {
    ProcessStartInfo p = new ProcessStartInfo(fopPath + "fop.bat");
    p.Arguments = String.Format("{0} {1}", foFilePath, pdfFilePath);
    p.WindowStyle = ProcessWindowStyle.Hidden;
    p.WorkingDirectory = fopPath;
    Process proc = new System.Diagnostics.Process();
    proc.StartInfo = p;

    proc.Start();
    proc.WaitForExit();
    }
catch() {
}
Run Code Online (Sandbox Code Playgroud)

请阅读原始文章:http://www.ptperalta.net/index.php/technology/using-apache-fop-in-net.html