Rubicon Geschrieben 26. März 2003 Geschrieben 26. März 2003 Hi @ all, muß für mein Abschlußprojekt folgende "Bastelarbeit" leisten: Daten aus einer MySQL-Tabelle auslesen in ein (von mir zu programmierendes) Java-Programm importieren, dort berechnen und/oder auswerten und als Graphik in einem PDF-Dokument ausgeben. Soweit ok, hätte ich bloß eine Ahnung wie die Transformation Java=>PDF zu lösen wäre! Hat jemand von Euch eine Idee? Ich trage zur Zeit einen ganzen Lattenzaun vor meinem Kopf spazieren.... Gruß Nicola Zitieren
Jaraz Geschrieben 26. März 2003 Geschrieben 26. März 2003 Hi, ne Übersicht über PDF Reader/Writer für Java findest du hier: http://www.geocities.com/marcoschmidt.geo/java-libraries-pdf.html Da ich noch mit keiner Lösung gearbeitet habe (steht aber demnächst an), kann ich keine weiteren Erfahrungen liefern. Ich würde mir aber mal FOP anschauen. http://xml.apache.org/fop/index.html Sieht aber nicht gerade trivial aus. Gruß Jaraz Zitieren
Jaraz Geschrieben 26. März 2003 Geschrieben 26. März 2003 So, ich habe mir das mal näher angeschaut. Also für FOP müssen die Daten im XML Format vorliegen. Du musst also aus deinem ResultSet einen XML Tree aufbauen. Dann kommt das schwierigste. Für die Ausgabeformatierung muss eine xsl Datei geschrieben werden. Da hilft nur weitergehende Literatur. Zum Schluss schickt man beides, XML und XSL durch den FOP Transformer. Kleines Beispiel dazu. // Driver mit PDF Option laden. FileOutputStream outputstream = new FileOutputStream("out.pdf"); org.apache.fop.apps.Driver driver = new org.apache.fop.apps.Driver(); driver.setRenderer(org.apache.fop.apps.Driver.RENDER_PDF); driver.setOutputStream(outputstream); //XML Tree aufbauen DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = builder.newDocument(); Element root = document.createElement("glossary"); ... ... XML Daten weiter aufbereiten. ... //XML und XSL durch den Transformer und den Driver jagen. Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(new FileInputStream("glossary.xsl"))); transformer.transform(new DOMSource(document), new SAXResult(driver.getContentHandler())); outputstream.close(); Das ist eigentlich der ganze Java Part. Ich schreibe dabei in die Datei out.pdf Du kannst natürlich auch das ganze als servlet Output mit dem entsprechenden MIME Typ für pdf zurückliefern. Das schwierige an der Sache ist halt zu deinem XML Tree die passende XSL Datei zu schreiben. Bei FOP ist aber ein "kleines" Examle dabei und zwar im Ordner: fop-0.20.4\docs\examples\markers Viel Spass dabei und nicht entmutigen lassen. Gruß Jaraz PS: Wenn jemand weiss, wo ich ein freies Ebook über XSL finde, wäre ich über einen Link dankbar. Zitieren
Snowghost Geschrieben 27. März 2003 Geschrieben 27. März 2003 Zum Erzeugen von PDF kannst du auch das OpenSource-Framework "JasperReport" verwenden. Zu finden unter sourceforge.net Snowghost Zitieren
Rubicon Geschrieben 27. März 2003 Autor Geschrieben 27. März 2003 1000 Dank für die Antworten, hoffe ich kriege das gebügelt! Nicola Zitieren
Florian_K Geschrieben 4. April 2003 Geschrieben 4. April 2003 Wenn Framework, dann richtig! Nimm Cocoon, der kann nicht nur PDF, der kann auch XML, XLS, RTF, SVG, VRML und natrülich so exotische Formate wie Plaintext und HTML. Schau's dir einfach mal an unter http://xml.apache.org/cocoon/ Vielleicht ein Nachteil, es setzt auf Tomcat auf. http://jakarta.apache.org/tomcat/index.html Allerdings kann man die recht einfach aufsetzen und sind danach nur Blackbox zum ausführen der Servlets. Gruß, Florian Zitieren
Jaraz Geschrieben 4. April 2003 Geschrieben 4. April 2003 Originally posted by Florian_K Wenn Framework, dann richtig! Nimm Cocoon, der kann nicht nur PDF, der kann auch XML, XLS, RTF, SVG, VRML und natrülich so exotische Formate wie Plaintext und HTML. Soweit ich weiss, nutzt Cocoon FOP als Renderengine für PDFs. Gruß Jaraz Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.