# XML in PDF umwandeln



## st*ex (26. Sep 2006)

Hallo ich habe eine Java-Anwendung geschrieben die eine 
XML-Datei in eine PDF-Datei umwandelt. Nun habe ich folgendes Problem: Beim
Ausführen der Anwendung kommt jedes mal eine _java.lang.NullPointerException_.
Ich habe mir bereits andere Beiträge angeschaut und das Internet durchsucht, dass
hat mir aber nicht weiterhelfen können.
Kann mir da jemand weiterhelfen?

Hier mein Java-Code:

```
Document doc = new Document();

try
{	    
    PdfWriter.getInstance(doc,
      new FileOutputStream("mypdf.pdf"));    

    XmlParser.parse(doc, "datei.xml", "tagmap.xml");
}
catch (Exception e)
{
    System.err.println(e.getMessage());
}
```


Inhalt von datei.xml:

```
<?xml version="1.0"?>
<DOKUMENT>
	<KAPITEL>
		<TITLE>Kapitel</TITLE>
		<NEWLINE/>
		<TEXT>Dieser Text wurde mit <BOLDTEXT>iText </BOLDTEXT> in das PDF-Format konvertiert.</TEXT>
	</KAPITEL>
	<KAPITEL>
		<TITLE>Kapitel</TITLE>
		<NEWLINE/>
		<TEXT>Noch mehr Text ...</TEXT>
	</KAPITEL>
</DOKUMENT>
```


Inhalt von tagmap.xml

```
<tagmap>
	<tag name="paragraph" alias="TEXT">
		<attribute name="leading" value="14"/>
		<attribute name="size" value="10"/>
	</tag>
	<tag name="chunk" alias="BOLDTEXT">
		<attribute name="style" value="bold"/>
	</tag>
	<tag name="itext" alias="DOKUMENT"/>
	<tag name="newline" alias="NEWLINE"/>
	<tag name="title" alias="TITLE">
		<attribute name="size" value="24"/>
	</tag>
	<tag name="chapter" alias="KAPITEL">
		<attribute name="numberdepth" value="2"/>
	</tag>
</tagmap>
```


----------



## hupfdule (26. Sep 2006)

Gib doch mal an, wo denn die NullPointerException auftritt. Ich vermute, dass dein File nicht gefunden wird und dein Stream daher leer ist. Das lässt sich durch Debuggen aber sehr leicht selbst heraus finden.


----------



## st*ex (26. Sep 2006)

Also der Fehler tritt bei dieser Anweisung auf:


```
XmlParser.parse(doc, "datei.xml", "tagmap.xml");
```

Ich habe nachgeschaut, die Dateien findet er.


----------



## AlArenal (26. Sep 2006)

Logischerweise muss entweder XmlParser oder doc null sein.


----------



## st*ex (26. Sep 2006)

doc  ist bei mir nicht null
XmlParser ist eine Klasse aus dem Java-Package _com.lowagie.text.xml.XmlParser_ und auch nicht null
also ich weiß nicht wo ich noch nachschauen soll


----------



## CelikBlek (28. Sep 2006)

```
System.err.println(e.getMessage());
```
nimm das mal raus und gib stattdessen dies aus. 

```
e.printStackTrace();
```
und poste dann mal dein Ergebnis.
mfg


----------



## st*ex (29. Sep 2006)

das bekomme ich als ergebnis:

ExceptionConverter: java.lang.NullPointerException
	at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:658)
	at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
	at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
	at com.lowagie.text.xml.TagMap.init(TagMap.java:205)
	at com.lowagie.text.xml.TagMap.<init>(TagMap.java:187)
	at com.lowagie.text.xml.XmlParser.go(XmlParser.java:121)
	at com.lowagie.text.xml.XmlParser.parse(XmlParser.java:330)
	at com.umwandeln.pdf.PdfCreatorUtils.createPdfFromHtml(PdfCreatorUtils.java:31)
	at com.umwandeln.Main.doGet(Main.java:380)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
	at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
	at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
	at java.lang.Thread.run(Thread.java:534)


----------



## CelikBlek (29. Sep 2006)

Schau dir mal die Stelle genauer an. Da könnte was sein. Ich benutze auch den FOP und lowagie. Hatte bislang keine Probleme damit.

```
com.umwandeln.pdf.PdfCreatorUtils.createPdfFromHtml(PdfCreatorUtils.java:31)
```


----------



## st*ex (29. Sep 2006)

habe noch einen anderen lösungsweg für
mein problem gefunden
werde ihn posten wenn ich ihn fertig ausprobiert habe


----------



## st*ex (11. Dez 2006)

habe jetzt eine funktionierende Lösung für mein problem
schreibe mal kurz die schritte auf die ich mache da der Code der Anwendung viel zu lang zum posten ist:

- Auslesen der Daten in der XML-Datei in Arrays
- Tabllen für die Darstellung im PDF-Dokument erzeugen
- Daten in die Tablen schreiben
- Dokument erzeugen
- Tabellen in das PDF-Dokument schreiben
- fertig


folgende Seite hat mir dabei geholfen:  www.lowagie.com/iText/tutorial/


----------

