私はmigration guideに従っていますが、私はそれを正しく理解していないようです。 Apache FOP:1.1から2.1へのアップグレード
は私がFOP 2.1に固執する上記のコードを適応:はFOP 1.1で、私はこの作業コードを持って
public class XsltFactory {
private static final String FO_CONFIG_FILE = "/path/to/fop-config.xml";
private static FopFactory fopFactory;
private static synchronized void initFopFactory(final ServletContext context) throws Exception {
Configuration cfg = new DefaultConfigurationBuilder().build(XsltFactory.class.getResourceAsStream(FO_CONFIG_FILE));
FopFactoryBuilder fopFactoryBuilder = new FopFactoryBuilder(
new URI(ServletContextURIResolver.SERVLET_CONTEXT_PROTOCOL),
new URIResolverAdapter(new ServletContextURIResolver(context))
);
fopFactoryBuilder.setConfiguration(cfg);
fopFactory = fopFactoryBuilder.build();
}
}
しかし、私は次のエラーを取得:
java.lang.Exception: Fail to create PDF
at ....web.controller.PrintPdfController.renderPdf(PrintPdfController.java:181)
[...]
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused by: java.net.URISyntaxException: Expected scheme-specific part at index 16: servlet-context:
at java.net.URI$Parser.fail(URI.java:2829)
at java.net.URI$Parser.failExpecting(URI.java:2835)
at java.net.URI$Parser.parse(URI.java:3038)
at java.net.URI.<init>(URI.java:595)
[...]
... 42 common frames omitted
を
PDFの作成に失敗したため、PDFの読み込みに失敗しました。
EDIT:
SERVLET_CONTEXT_PROTOCOL
コンテキスト後+ "///"
を追加した後、私は今取得:調査の数日後
Caused by: java.net.MalformedURLException: unknown protocol: servlet-context
at java.net.URL.<init>(URL.java:592)
at java.net.URL.<init>(URL.java:482)
at java.net.URL.<init>(URL.java:431)
at java.net.URI.toURL(URI.java:1096)
at org.apache.fop.fonts.FontDetectorFactory$DefaultFontDetector.detect(FontDetectorFactory.java:94)
... 59 common frames omitted
これはドキュメントから正しく見えます。 1.0から2.1になったときに設定が変更されたようです。それはあなたのURIか解決者かもしれません。あなたが生成しているURIの具体例は何ですか? –
生成されたbaseUriは "servlet-context:///"です。私は春のアプリケーションで作業しており、絶対的なファイルシステムのパスをbaseUriとして提供することはできません。 –