2017-08-28 10 views
4

Apache FOPを使用してPDFファイルを生成するアプリケーションがあります。生成されたPDFのキリル文字を除いて、すべてがうまくいきます。私が理解する限り、私はアプリケーションにキリル文字を持つフォントを束ねることになっています。私は(PDFレンダラのためにかなりのデフォルト1)../src/main/resources/conf/fop.xmlのconfigファイルを持つ と、このようにFOPを初期化:JavaサーブレットにApache fop 2.1を埋め込む

だから、私は次のようにアプリケーションを設定し

FopFactoryBuilder fopBuilder = 
    new FopFactoryBuilder(fileLoader.getFile("conf/fop.xml").toURI(), 
    new ClasspathResolverURIAdapter()); 
fopFactory = fopBuilder.build(); 

fileLoaderはファイルを読み込むための独自のユーティリティです.XSLTはそれによって読み込まれ、すべてがうまくいきます。私は運がないので、そうする別の方法を試みた。フォントを除いて、Fop自体はうまく機能します。コンフィグで

私が持っている:

<renderers> 
    <renderer mime="application/pdf"> 
     <filterList> 
     <value>flate</value> 
     </filterList> 
     <fonts> 
     <directory recursive="true">./</directory> 
     <auto-detect/> 
     </fonts> 
    </renderer> 
    </renderers> 

フォントのconf /の下にサブディレクトリにあります。

私のXSLTはフォントを参照し、コマンドラインからすべてうまく動作しますが、私は望む結果を得ていますので、XSLTが正しいと思います。私はそれが壊れて作る場合でも、私は設定を変更したとき

  • 私は、FOPランタイムからどんな反応が表示されない:

    は、私は2つの問題を参照してください。

  • もちろん、フォントはロードされません。

おそらく私はここで非常に明白な何かを見逃していると誰かが私を導くことができることを願っています。あなたはフォントが設定されていないと、彼らはPDF出力に埋め込まれていないので、設定ファイルを使用してないある瞬間

+0

通常非ラテン/非標準フォントがPDF文書にEMEBEDDEDされる必要があります:

embedding instructionsを1として、あなたのコードは次のように何かを持っている必要があります。詳細は技術に依存していますが、私はFOPを知らないのですが、多くのツールには同様の動作があります –

答えて

1

FopFactoryBuilderコンストラクタで

URIパラメータが設定ファイルをロードしないように、決意相対URIに使用されています。

import org.apache.avalon.framework.configuration.Configuration; 
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; 

... 

DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder(); 
Configuration cfg = cfgBuilder.buildFromFile(new File("conf/conf.xml")); 
FopFactoryBuilder fopFactoryBuilder = new FopFactoryBuilder(new File(".").toURI()).setConfiguration(cfg); 
FopFactory fopFactory = fopFactoryBuilder.build(); 
+0

これは見逃せないものです。ありがとう。 – niemda

関連する問題