Hallo alle miteinander,
erst einmal allen noch ein gutes neues Jahr mit vielen Erfolgen!!!!
Mein Problem:
Ich habe aus einer Datenbank-Abfrage ein XML erstellt, welches ich mit FOP zu einem PDF-Ausdruck umwandeln will. Der Code der PDF-Erzeugungsklasse ist der folgende:
Der Quell XML-Strom sieht so aus (CompactFormat):
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<root><datum>2010-12-06<taetigkeit kategorie="Sonstiges" auftraggeber="AIT" von="08:30:00" bis="09:30:00">bla..</taetigkeit><taetigkeit kategorie="Besprechung" auftraggeber="DEK" von="09:30:00" bis="11:40:00">bla..</taetigkeit><taetigkeit kategorie="Sonstiges" auftraggeber="AIT" von="12:15:00" bis="12:40:00">bla..</taetigkeit><taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="13:00:00" bis="16:30:00">bla..</taetigkeit></datum><datum>2010-12-07<taetigkeit kategorie="Dokumentation" auftraggeber="STDEK" von="08:30:00" bis="10:45:00">bla..</taetigkeit><taetigkeit kategorie="Besprechung" auftraggeber="STDEK" von="11:00:00" bis="11:50:00">bla..</taetigkeit></datum><datum>2010-12-08<taetigkeit kategorie="Entwicklung" auftraggeber="AIT" von="08:40:00" bis="09:30:00">bla..</taetigkeit><taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="10:00:00" bis="16:30:00">bla..</taetigkeit></datum><datum>2010-12-09<taetigkeit kategorie="Sonstiges" auftraggeber="DEK" von="08:40:00" bis="09:10:00">bla..</taetigkeit><taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="10:00:00" bis="17:00:00">bla..</taetigkeit></datum><datum>2010-12-10<taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="08:30:00" bis="11:00:00">bla..</taetigkeit><taetigkeit kategorie="Sonstiges" auftraggeber="AIT" von="12:00:00" bis="12:45:00">bla..</taetigkeit><taetigkeit kategorie="Besprechung" auftraggeber="AIT" von="12:45:00" bis="14:30:00">bla..</taetigkeit></datum></root>
[/XML]
Hab's aber selbstverständlich auch schon mit den anderen Formaten, die JDOM bietet, versucht. Tut mir leid, dass das jetzt alles auf einer Zeile angezeigt wird, ist aber IMHO unerheblich.
Die XSL-Datei, welche ich gern für die Formatierung verwenden würde, hat dieses Aussehen. Ist noch fast leer:
[XML]<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4">
<!-- Page template goes here -->
</fo:simple-page-master>
</fo:layout-master-set>
<foage-sequence master-name="A4">
<!-- Page content goes here -->
<xsl:template match="root" />
</foage-sequence>
</fo:root>
</xsl:stylesheet>[/XML]
Rufe ich die Methode transformer.transform (src, res) (sieher oben) auf, bekomme ich folgende Fehlermeldung:
.
Es existieren nur 2 Zeilen (zumindest im CompactFormat). danach is nix mehr (lt. Texteditor).
Habe mir das XML-file dann einmal mit dem Vi als Hex-Editor angesehen, was folgendes Aussehen hat (die letzten beiden Zeilen):
Da befinden sich also zwei Punkte, die wohl durch das '0d' und '0a' repäsentiert sind, von denen eins sicher ein Zeilenumbruch ist.
Ist es möglich, dass diese daran schuld sind? Und falls ja, wie kann ich dem begegnen, lasse es mir ja per JDOM erzeugen?
Hab eine ähnlich Frage schon einmal in einem Thread hier gestellt, allerdings als Anschlussfrage, deshalb wohl auch keine Antwort bekommen. Vermute mal, da fehlte was.
Falls hier noch etwas fehlt, nur zu. Ich liefere prompt nach.
Hoffe, mir kann jemand helfen.
LG Thomas
erst einmal allen noch ein gutes neues Jahr mit vielen Erfolgen!!!!
Mein Problem:
Ich habe aus einer Datenbank-Abfrage ein XML erstellt, welches ich mit FOP zu einem PDF-Ausdruck umwandeln will. Der Code der PDF-Erzeugungsklasse ist der folgende:
Java:
public class GeneratePDF {
private static FopFactory fopFac = FopFactory.newInstance();
private static TransformerFactory transFac = TransformerFactory.newInstance();
public static String generateIt(InputStream xml_in) {
ByteArrayInputStream xmlin = (ByteArrayInputStream) xml_in;
FOUserAgent fuo = fopFac.newFOUserAgent();
//File xmlin = new File("out.xml");
OutputStream out = null;
File xslt = null;
try {
out = new FileOutputStream(new File ("output.pdf"));
xslt = new File("layout.xsl");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Fop fop = fopFac.newFop(MimeConstants.MIME_PDF, fuo, out);
Transformer transformer = transFac.newTransformer(new StreamSource(xslt));
Source src = new StreamSource(xmlin);
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res);
out.close();
} catch (FOPException e1) {
System.err.println("FOPException");
e1.printStackTrace();
} catch (TransformerConfigurationException e2) {
System.err.println("TransformerConfigurationException");
e2.printStackTrace();
} catch (TransformerException e3) {
System.err.println("TransformerException");
e3.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "true";
}
}
Der Quell XML-Strom sieht so aus (CompactFormat):
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<root><datum>2010-12-06<taetigkeit kategorie="Sonstiges" auftraggeber="AIT" von="08:30:00" bis="09:30:00">bla..</taetigkeit><taetigkeit kategorie="Besprechung" auftraggeber="DEK" von="09:30:00" bis="11:40:00">bla..</taetigkeit><taetigkeit kategorie="Sonstiges" auftraggeber="AIT" von="12:15:00" bis="12:40:00">bla..</taetigkeit><taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="13:00:00" bis="16:30:00">bla..</taetigkeit></datum><datum>2010-12-07<taetigkeit kategorie="Dokumentation" auftraggeber="STDEK" von="08:30:00" bis="10:45:00">bla..</taetigkeit><taetigkeit kategorie="Besprechung" auftraggeber="STDEK" von="11:00:00" bis="11:50:00">bla..</taetigkeit></datum><datum>2010-12-08<taetigkeit kategorie="Entwicklung" auftraggeber="AIT" von="08:40:00" bis="09:30:00">bla..</taetigkeit><taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="10:00:00" bis="16:30:00">bla..</taetigkeit></datum><datum>2010-12-09<taetigkeit kategorie="Sonstiges" auftraggeber="DEK" von="08:40:00" bis="09:10:00">bla..</taetigkeit><taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="10:00:00" bis="17:00:00">bla..</taetigkeit></datum><datum>2010-12-10<taetigkeit kategorie="Entwicklung" auftraggeber="DEK" von="08:30:00" bis="11:00:00">bla..</taetigkeit><taetigkeit kategorie="Sonstiges" auftraggeber="AIT" von="12:00:00" bis="12:45:00">bla..</taetigkeit><taetigkeit kategorie="Besprechung" auftraggeber="AIT" von="12:45:00" bis="14:30:00">bla..</taetigkeit></datum></root>
[/XML]
Hab's aber selbstverständlich auch schon mit den anderen Formaten, die JDOM bietet, versucht. Tut mir leid, dass das jetzt alles auf einer Zeile angezeigt wird, ist aber IMHO unerheblich.
Die XSL-Datei, welche ich gern für die Formatierung verwenden würde, hat dieses Aussehen. Ist noch fast leer:
[XML]<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4">
<!-- Page template goes here -->
</fo:simple-page-master>
</fo:layout-master-set>
<foage-sequence master-name="A4">
<!-- Page content goes here -->
<xsl:template match="root" />
</foage-sequence>
</fo:root>
</xsl:stylesheet>[/XML]
Rufe ich die Methode transformer.transform (src, res) (sieher oben) auf, bekomme ich folgende Fehlermeldung:
Code:
System-ID unbekannt; Zeilennummer3; Spaltennummer1; Content is not allowed in trailing section.
Es existieren nur 2 Zeilen (zumindest im CompactFormat). danach is nix mehr (lt. Texteditor).
Habe mir das XML-file dann einmal mit dem Vi als Hex-Editor angesehen, was folgendes Aussehen hat (die letzten beiden Zeilen):
Code:
00005d0: 2f74 6165 7469 676b 6569 743e 3c2f 6461 /taetigkeit></da
00005e0: 7475 6d3e 3c2f 726f 6f74 3e0d 0a tum></root>..
Ist es möglich, dass diese daran schuld sind? Und falls ja, wie kann ich dem begegnen, lasse es mir ja per JDOM erzeugen?
Hab eine ähnlich Frage schon einmal in einem Thread hier gestellt, allerdings als Anschlussfrage, deshalb wohl auch keine Antwort bekommen. Vermute mal, da fehlte was.
Falls hier noch etwas fehlt, nur zu. Ich liefere prompt nach.
Hoffe, mir kann jemand helfen.
LG Thomas