1

私はいくつかのフォームを持つアプリケーションに取り組んでおり、FOP を使用して pdf ファイルを作成しています。生成される PDF ファイルは Time New Roman ですが、Arial フォントが必要です。ここで説明されているように、projectName->fonts->arial.ttf に arial.ttf を追加しました。

この ttf とコードは alfresco amp ファイルに入れる必要がありますが、.ttf ファイルだけで jar ファイルを作成する方法がわからないため、現在は arial.ttf の jar ファイルとして追加していません。これを達成するために行ったことは次のとおりです。しかし、pdfはまだ新しいローマ時代にあります: 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();
4

1 に答える 1

3

FopFactory を作成するときにフォント構成をロードする必要があると思います。http://xmlgraphics.apache.org/fop/1.0/embedding.html#config-externalを参照してください。

ただし、XSL-FO ファイルで font-family として「sans-serf」を指定すると、FOP はデフォルトで Arial フォントを使用します。

于 2012-04-22T14:49:18.587 に答える