Ich versuche, Jfreechart in .NET zu verwenden, und ich brauche jemanden, der mir hilft, das Problem zu lösen. Wenn Sie etwas Zeit haben und sich für solche verrückten Dinge interessieren, hinterlassen Sie bitte einen Kommentar, damit wir versuchen können, es zum Laufen zu bringen. Ja, das ist kein Scherz.
Zuvor habe ich Apache FOP in ASP.NET (vb.net) verwendet, um PDFs on the fly zu generieren. Das habe ich getan, weil es keinen kostenlosen und einfach zu bedienenden Generator für PDF-Inhalte für .NET gab. Wenn Sie wissen möchten, wie Sie Apache FOP in .NET verwenden können, dann klicken Sie bitte auf den Link Apache FOP von .NET aufrufen. Wenn Sie das mit FOP aus .NET heraus generierte PDF sehen möchten, klicken Sie bitte auf diesen Link.
Sie können eigenständige Java-Pakete wie Xalan, Apache FOP, Servlet usw. in .NET mit IKVM verwenden. IKVM ist eine .NET-Implementierung von Java.
IKVM kann die Java jar-Dateien in .NET dll-Dateien konvertieren, die Sie als Referenz in Ihr .NET-Projekt importieren und wie Java-Klassen verwenden können.
Zum Beispiel
Die Apache FOP Jars können nach der Konvertierung in .ddl wie folgt verwendet werden.
[vbnet]
Versuchen Sie
AppDomain.CurrentDomain.Load("xercesImpl-2.2.1")
AppDomain.CurrentDomain.Load("batik")
java.lang.System.setProperty("javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl")
Dim filename As String = generateXSLFO()
Dim isrc As org.xml.sax.InputSource = New org.xml.sax.InputSource(Dateiname & ".fo")
Dim fs As java.io.FileOutputStream = New java.io.FileOutputStream(Dateiname & ".pdf")
Dim driver As Driver = New Driver(isrc, fs)
' driver.setLogger(cl)
driver.setRenderer(driver.RENDER_PDF)
driver.run()
fs.close()
Label1.Text = "erledigt"
System.IO.File.Delete(Dateiname & ".xml")
System.IO.File.Delete(Dateiname & ".fo")
Catch ex As Exception
Label1.Text = ex.ToString
Versuch beenden
[/vbnet]
Der erste Schritt zur Verwendung von Jfreechart in .NET ist die Konvertierung in .dll's. Laden Sie dazu bitte ikvm herunter und installieren Sie es auf Ihrem PC. Laden Sie auch die jfreechart lib's auf Ihren PC herunter.
Gehen Sie in das bin-Verzeichnis der ikvm-Installation und führen Sie die folgenden Befehle aus.
(Damit der Befehl funktioniert, gehe ich davon aus, dass sich die Dateien wie jfreechart-1.0.5.jar, servlet.jar und jcommon-1.0.9.jar im bin-Verzeichnis befinden) .
[as]ikvmc -target:library -reference:/usr/lib/IKVM.GNU.Classpath.dll servlet.jar
ikvmc -target:library -reference:/usr/lib/IKVM.GNU.Classpath.dll -reference:servlet.dll jcommon-1.0.9.jar
ikvmc -target:library -reference:/usr/lib/IKVM.GNU.Classpath.dll -reference:servlet.dll reference:jcommon-1.0.9.dll jfreechart-1.0.5.jar[/as]
Dadurch werden .dll-Dateien von jfreechart, jcommon und servlet generiert.
Starten Sie nun in Ihrer VS.NET IDE ein neues asp.net-Webanwendungsprojekt mit C# als Backend-Code. Fügen Sie die neu generierte dll als Referenzen zum Projekt hinzu. Fügen Sie auch die dll-Dateien
System.NotImplementedException: Die Methode oder Operation ist nicht implementiert. at ikvm.awt.NetGraphicsEnvironment.createGraphics(BufferedImage bi) at java.awt.image.BufferedImage.createGraphics() at org.jfree.chart.JFreeChart.createBufferedImage(Int32 width, Int32 height, Int32 imageType, ChartRenderingInfo info) at org.jfree.chart.JFreeChart.createBufferedImage(Int32 width, Int32 height, ChartRenderingInfo info) at org.jfree.chart.ChartUtilities.writeChartAsJPEG(OutputStream out, Single quality, JFreeChart chart, Int32 width, Int32 height, ChartRenderingInfo info) at csjfree.WebForm1.Button1_Click(Object sender, EventArgs e) in c:inetpubwwwrootcsjfreewebform1.aspx.cs:line 72
Das Problem ist, dass IKVM.AWT nicht vollständig mit Java AWT-Funktionen implementiert ist. Der Autor von IKVM weist auf seiner Website auch darauf hin. Jetzt frage ich mich, wie ich diesen Fehler loswerden und jfreechart in asp.net nutzen kann. Ich dachte an Folgendes
- Ersetzen der ikvm.awt dll durch eine andere, gleichwertige java Awt dll.
- Nutzen Sie das .NET MFC Bildrendering und geben Sie es an Jfree Chart weiter (ich weiß nicht, wie man das macht)
Also noch einmal: Wenn Sie etwas Zeit haben und Interesse daran haben, solche verrückten Dinge zu tun, hinterlassen Sie bitte einen Kommentar, damit wir versuchen können, dies zum Laufen zu bringen.
Verfasst von
Balaji D Loganathan
Working as a Senior Consultant at Xebia India IT Architects Private Limited, Gurgaon, India.
Unsere Ideen
Weitere Blogs
Contact



