# Fop / Java /Fonts



## Haerti (7. Nov 2008)

Tag zusammen,
eine Stundenlange Suche hat mich auf eine Seite gebracht in der Beschrieben wird wie man mit Fop und Java eine neue Schriftart einfügen kann.

Beispiel zu Fop und Fonts

Jetzt hab ich alles genau wie in der Anleitung beschrieben übernohmen, bis zu der Stelle an der es darum geht das ganze in Java einzubinden:

```
File userConfigFile = new File("userconfig.xml");
	 org.apache.fop.apps.Options options = new org.apache.fop.apps.Options(userConfigFile);
```

Ich besitze in der fop.jar keine Klasse Options?

Muss ich diese Klasse selbst anlegen oder bekommt man die irgendwo anderes her?

Mfg Haerti


----------



## SlaterB (7. Nov 2008)

http://www.findjar.com/index.jsp?query=++++++++org.apache.fop.apps.Options


----------



## Haerti (7. Nov 2008)

Ok danke erstmal für den link,

Jetzt bleiben noch ein paar Fragen,

1. Beim einfügen des fop in den lib Ornder bringt der Tomcat beim Aufruf der PDF folgenden Fehler: 


```
java.lang.VerifyError: (class: org/apache/fop/fo/ElementMappingRegistry, method: findFOMaker signature: (Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Locator;)Lorg/apache/fop/fo/ElementMapping$Maker;) Wrong return type in function
	org.apache.fop.apps.FopFactory.<init>(FopFactory.java:134)
	org.apache.fop.apps.FopFactory.newInstance(FopFactory.java:144)
	de.weig.fsz.web.servlet.HandyServlet.generierePDFAsStream(HandyServlet.java:93)
	de.weig.fsz.web.servlet.HandyServlet.generierePDF(HandyServlet.java:88)
	de.weig.fsz.web.servlet.HandyServlet.service(HandyServlet.java:78)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
```

2. Ich besitze jetzt 2 fop Dateien, in der alten befindet sich die FopFactory Klasse die ich brauche um mein pdf zu    generieren, wie also kann ich es machen damit ich beide verwenden kann?


----------



## SlaterB (7. Nov 2008)

ich kann im Detail nicht nachvollziehen, worum es bei dir genau geht,
vermute aber aufgrund des ersten Postings, dass du nun vielleicht verschiedene Libraries einsetzt, 
oder Klassen, die mit unterschiedlichen Libraries kompiliert wurden,

sowas ist ja nie schön


----------



## Haerti (7. Nov 2008)

Also um mein Problem etwas genau zu beschreiben,
ich hab eine Libarie fop.jar mit dem ich die pdf-datei generiere.

In dieser fop.jar befindet sich eine Klasse FopFactory die ich für den Aufruf des PDF's benötige.
Jetzt wollte ich die alte fop.jar einfach durch die andere fop-0.20.3.jar ersetzten.

Das ist aber durch die Tatsache das die Klasse FopFactory in fop-0.20.3.jar nicht vorhanden ist leider nicht möglich.

Jetzt stellt sich bei mir die Frage wie ich das Problem mit den beiden fop Dateien lösen kann.

Ich hoffe ich konnte dir mein Problem genauer erläutern.


----------



## SlaterB (7. Nov 2008)

erstmal müsste man herausfinden, welche Lib die neuere ist, vielleicht haben die .class-Dateien ein Datum?


ich vermute, dass FobFactory oder Options in der neuen Version nicht mehr vorhanden ist, 
im günstigen Falle weil sich nur in ein anderes package verschoben wurde,
um ungünstigen Falle, weil sie komplett durch anderen zu verwendenen Quellcode ersetzt wurde

du musst dir die passenden Code-Konstrukte zur passenden Version suchen,

vergleiche das mit AWT + Swing, falls du das kennst,
du verwendest irgendeine alte Factory = Frame und hast nun für Options = JButton die neue Swing-Library geladen,
JButton funktioniert aber nicht mit Frame, also musst du Frame auf das äquivalente neue Konstrukt = JFrame umstellen,

das so als allgemeiner Tipp, worum es konkret, weiß ich nach wie vor nicht, und will ich auch gar nicht wissen


----------



## SlaterB (25. Jun 2009)

hmm, jetzt versuche ich auch Version 0.95 und habe den gleichen Fehler 
im Internet ist nicht viel dazu zu finden außer
https://issues.apache.org/bugzilla/show_bug.cgi?id=41379
ohne Lösung

habe nun vorerst den Source geladen, in ein Eclipse-Projekt eingefügt, paar Klassen fehlen als Source-Code,
sollen irgendwie automatisch generiert werden, habe die .class aus dem fertigen jar kopiert,
außerdem noch paar fehlende Libraries wie jai-core-1.1.3-alpha.jar nachgeladen,
dann kompiliert alles und man kann die einfachsten Beispiele endlich ausführen..

edit:
zwar ne schöne Übung, aber doch unnötig, 
Problem war, dass die alte Version auch noch im Classpath war..


----------

