2016-07-09 19 views
1

Ich habe einen OSGi Blueprint-Container mit Apache FOP-Abhängigkeit. Wenn ich PDF mit Standardkonfiguration erzeuge, gibt es Probleme mit russischen Symbolen (#### statt Text). In nicht OSGi Test-Anwendung dieses Problem leicht zu beheben: Ich benutze benutzerdefinierte fop.xconf Config-Datei und zwei Arial *. TTF Font-Dateien im selben Verzeichnis. Die automatische Erkennung in der Datei fop.xconf behebt dieses Problem ebenfalls.Read Apache FOP-Konfiguration und Schriftarten in OSGi Blueprint-Container

Aber in OSGi Blueprint-Container kann ich Conf-Datei aus Bundle-Ressourcen nicht lesen. Kann mir jemand ein Beispiel zeigen, wie man Xconf und Schriften aus dem Blueprint Container liest? Oder wie kann ich Schriftarten programmgesteuert ohne Ressourcen lesen konfigurieren?

Antwort

1

Also, ich habe die Lösung gefunden. Wir können nicht File() mit "bundleresource: // ..." verwenden Weg, aber wir können verwenden URI():

 URL url = getClass().getClassLoader().getResource(FOP_XCONF_FILE); 
     fopFactory = FopFactory.newInstance(url.toURI(), url.openStream()); 

In diesem Fall sind wir Conf-Datei Input-Stream öffnen unserer Bündel Ressourcen und Pass es zu spezieller FopFactory.newInstance() Definition. Fop.xconf XML mit Element funktioniert wie ein Zauber.