2012-04-20 17 views
0

私はいくつかのフォームを持つアプリケーションで作業していますが、FOPを使用してPDFファイルを作成しています。生成されているPDFファイルはTime New Romanにありますが、Arialフォントで入力してください。ここで説明したように、私はprojectName-> fonts-> arial.ttfの中arial.ttfのを追加しました: http://www.publicstaticfinal.de/2011/01/26/fop-embedding-fonts-from-classpath/FOPTransformerにArialフォントを含めることができません

をこのTTFとコードが屋外でアンプファイルに行くことを持っていますが、今、私はarial.ttfのためのjarファイルとしてそれを追加しましたhaventは私だけの.ttfファイルとjarファイルを作成する方法がわからない、ここに私はこれを達成するために何をしたかであるが、PDFはのTimes New Romanに残っているので: fopconfig:次のようにクラスファイルを作成し

<fop version="0.94"> 
<base>./</base> 
<font-base>./</font-base> 
<renderer mime="application/postscript"> 
<fonts> 
     <font kerning="yes" embed-url="/fonts/arial.ttf" encoding-mode="auto"> 
      <font-triplet name="Arial" style="normal" weight="normal" /> 
     </font> 
    </fonts> 
    </renderer> 
</fop> 

import java.io.InputStream; 
import javax.xml.transform.Source; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.URIResolver; 
import javax.xml.transform.stream.StreamSource; 

public class ClasspathUriResolver implements URIResolver 
{ 

    public Source resolve(String href, String base) throws TransformerException 
    { 
    Source source = null; 
    InputStream inputStream = ClassLoader.getSystemResourceAsStream(href); 
    if (inputStream != null) 
    { 
     source = new StreamSource(inputStream); 
    } 
    return source; 
    } 
} 

そして、ここではFOPTranformerのための私のコードの一部です:

FopFactory fopFactory = FopFactory.newInstance(); 
    FOURIResolver uriResolver = (FOURIResolver)fopFactory.getURIResolver(); 
    uriResolver.setCustomURIResolver(new ClasspathUriResolver()); 
    FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); 

答えて

3

私は場合FOPは、デフォルトではArialフォントを使用しますがhttp://xmlgraphics.apache.org/fop/1.0/embedding.html#config-external

を参照してください、あなたはFopFactoryの作成時にフォント設定をロードする必要があると思いますXSL-FOファイルのfont-familyとして "sans-serf"を指定します。

+0

ありがとう、それは私の時間をたくさん保存しました:) – Ramkumar

関連する問題