2016-04-27 8 views
1

Ursprünglich war ich FopFactory wie so erstellen:Geben Sie eine Konfigurationsdatei mit FopFactoryBuilder

FopFactory.newInstance(new File("config/pdf/fop.xconf")) 

, die alle der benutzerdefinierten Konfiguration in meiner Konfigurationsdatei aufgenommen. Meine Anforderungen haben sich jedoch geändert und ich muss einen FopFactoryBuilder verwenden, um meine FopFactory zu erstellen (die keine Konfigurationsdatei als Parameter akzeptiert).

FopFactoryBuilder builder = new FopFactoryBuilder(URI.create("/"), uriResolverAdapter); 
Configuration configuration = new DefaultConfiguration("config/pdf/fop.xconf"); 
builder.setConfiguration(configuration); 

Aber das scheint nicht zu funktionieren. Ich muss speziell einige Schrift bezogenes umfassen:

<fonts> 
    <auto-detect/> 
    <font-base>./</font-base> 
    <directory recursive="true">config/pdf/fonts</directory> 
</fonts> 

Edit:

ich auch schon versucht, diese habe,

DefaultConfigurationBuilder defaultConfigurationBuilder = new DefaultConfigurationBuilder(); 
builder.setConfiguration(defaultConfigurationBuilder.build("config/pdf/fop.xconf")); 

sowie diese,

builder.setConfiguration(defaultConfigurationBuilder.buildFromFile(new File("config/pdf/fop.xconf"))); 

dies,

FileInputStream config = new FileInputStream(new File("config/pdf/fop.xconf")); 
builder.setConfiguration(defaultConfigurationBuilder.build(config)); 

dies,

builder.setConfiguration(defaultConfigurationBuilder.buildFromFile("config/pdf/fop.xconf")); 

und schließlich das (Jars.getJarFile bekommt nur die Datei der laufenden jar):

File jarFile = Jars.getJarFile(this); 
if (jarFile!= null) { 
    String absoluteLocation = jarFile.getParent() + "/config/pdf/fop.xconf"; 
    builder.setConfiguration(defaultConfigurationBuilder.buildFromFile(absoluteLocation)); 
} 

aber alle, geben Sie mir eine Ausnahme, wenn ich eine neue erstellen fop mit FopFactory:

java.lang.IllegalArgumentException: URI is not absolute 

Antwort

2

Was ich am Ende getan habe, war die Erstellung einer Konfiguration l diese ike:

DefaultConfigurationBuilder defaultConfigurationBuilder = new DefaultConfigurationBuilder(); 
builder.setConfiguration(defaultConfigurationBuilder.build("config/pdf/fop.xconf")); 

und Entfernen Sie die folgende Zeile aus meiner Konfiguration:

<auto-detect/> 
Verwandte Themen