2016-10-10 20 views
1

自分のサイトで提供されているDocx4jコミュニティパッケージを使用してWordファイルをPDFに変換しようとしています。 (http://www.docx4java.org/docx4j/docx4j-community-3.3.1.zipDocx4jとFOPでdocxをPDFに変換するときのエラー

docx4jとそのパッケージのFOPとの間に互換性がないようですが、以前にこの問題を抱えていた人がいて、このバージョンのライブラリを知っているのであれば、私は不思議です。

は、ここに私のコードです:

FOSettings foSettings = Docx4J.createFOSettings(); 
String inputfilepath = "path/to/file.docx"; 
String outputfilepath = "path/to/file.pdf"; 

WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath)); 
FileOutputStream os = new java.io.FileOutputStream(outputfilepath); 

foSettings.setFoDumpFile(new java.io.File(inputfilepath + ".fo")); 
foSettings.setWmlPackage(wordMLPackage); 

Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL); 

が、私は以下のスタックトレースをコピーしたが、エラーがFOPFactoryがパラメータなしのメソッドのnewInstance()を持っていないことを不平を言っています。 これはFORendererApacheFOP.javaから呼び出されています。以前のバージョンのFOPではこのメソッドを使用していましたが、パッケージのバージョンを置き換えようとしましたが、それは他の依存関係を破ります。私はDocx4j 3.3.1持っているパッケージとFOP任意の助け2.1

おかげで

java.lang.NoSuchMethodException:org.docx4j.convert.outでjava.lang.Class.getDeclaredMethod(Class.java:2130)でorg.apache.fop.apps.FopFactory.newInstance() .fo.renderers.FORendererApacheFOP.createFopFactory(FORendererApacheFOP.java:329) at org.docx4j.convert.out.fo.renderers.FORendererApacheFOP.getFopFactory(FORendererApacheFOP.java:253) at org.docx4j.convert.out.fo .renderers.FORendererApacheFOP.render(FORendererApacheFOP.java:119) at org.docx4j.convert.out.fo.AbstractFOExporter.postprocess(AbstractFOExporter.java:168) at org.docx4j.convert.out.fo.AbstractFOExporter.postprocess (AbstractFOExporter.java:47) at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:82) at org.docx4j.Docx4J.toFO(Docx4J.java:568) at org.docx4j.convert.out.fo。 org.docx4j.convert.out.fo.LayoutMasterSetBuilder.getLayoutMasterSetFragmentでorg.docx4j.convert.out.fo.LayoutMasterSetBuilder.fixExtents(LayoutMasterSetBuilder.java:138)でFOPAreaTreeHelper.getAreaTreeViaFOP(FOPAreaTreeHelper.java:191) (LayoutMasterSetBuilder。 Javaの:sun.reflect.NativeMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でorg.docx4j.convert.out.fo.XsltFOFunctions.getLayoutMasterSetFragment(XsltFOFunctions.java:81) で97) (NativeMethodAccessorImpl .java:62) at sun.reflect.DelegatingMethodAccessorImpl.i (org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:343) at org)。 (拡張機能テーブル)。 (FuncExtFunction.java:475) at xalan.templates.ElemCopyOf.execute(ElemCopyOf.java:134) at org.apache.xa lan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplatesでorg.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)で 。java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402) at org.apache。トランスフォーマイムプリ。トランスフォーム。 org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253) at org.docx4j。 XmlUtils.transform(XmlUtils.java:1275) at org.docx4j.XmlUt ils.transform(XmlUtils.java:1100) at org.docx4j.convert.out.common.AbstractXsltExporterDelegate.process(AbstractXsltExporterDelegate.java:66) at org.docx4j.convert.out.common.AbstractWmlExporter.process(AbstractWmlExporter。 java:63) at org.docx4j.convert.out.common.AbstractWmlExporter.process(AbstractWmlExporter.java:32) at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:79) at org.docx4j.Docx4J.toFO(Docx4J.java:568)sun.reflect.NativeMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でPDFConversion.main(PDFConversion.java:26) で(NativeMethodAccessorImpl .java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho dAccessorImpl.java:43) at java.lang.reflect.Mava.49() .NoSuchMethodException:org.apache.fop.apps.FopFactory.newInstance() at java.lang.Class.getDeclaredMethod(Class.java:2130) at org.docx4j.convert.out.fo.renderers.FORendererApacheFOP.createFopFactory( org.docx4j.convert.out.fo.renderers.FORendererApacheFOP.render(FORendererApacheFOPでorg.docx4j.convert.out.fo.renderers.FORendererApacheFOP.getFopFactory(FORendererApacheFOP.java:253) でFORendererApacheFOP.java:329) 。 java:119) at org.docx4j.convert.out.fo.AbstractFOExporter.postprocess(AbstractFOExporter.java:168) at org.docx4j.convert.out.fo.Ab stractFOExporter.postprocess(AbstractFOExporter.java:47) at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:82) at org.docx4j.Docx4J.toFO(Docx4J.java:568) at sun.reflect.DelegatingMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でPDFConversion.main(PDFConversion.java:26) (DelegatingMethodAccessorImpl .java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) org.docx4j。 openpackaging.exceptions.Docx4JException:またはパッケージ をエクスポートしている例外g.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:109) at org.docx4j.Docx4J.toFO(Docx4J.java:568) at PDFconversion.main(PDFConversion.java:26) at java.lang.reflectのでsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) でsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) .Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 原因:java.lang.NullPointerException at org.docx4j.convert。 out.fo.renderers.FORendererApacheFOP.render(FORendererApacheFOP.java:199) at org。docx4j.convert.out.fo.renderers.FORendererApacheFOP.render(FORendererApacheFOP.java:159) at org.docx4j.convert.out.fo.AbstractFOExporter.postprocess(AbstractFOExporter.java:168) at org.docx4j.convert。 org.docx4j.convert.out.common.AbstractExporter.exportでout.fo.AbstractFOExporter.postprocess(AbstractFOExporter.java:47) (AbstractExporter.java:82) ... 7もっと

答えて

0

スタック(FOPはFOP v2.1を初期化することができませんので、FOP 2.1または1.1の設定に戻っています。これは、FOP 2.1を使用しているため動作しません)

なぜ FOP 2.1のinitはできませんか?私たちが見る必要がある診断がhttps://github.com/plutext/docx4j-export-FO/blob/master/src/main/java/org/docx4j/convert/out/fo/renderers/FORendererApacheFOP.java#L320

[javaの] }キャッチ(例外e){ log.warn(; + e.getMessage() "FOPのsvnを設定することはできません")です。 log.debug(e.getMessage()、e); [/ javaの]

だからそれを行うには、クラスorg.docx4j.convert.out.fo.renderers.FORendererApacheFOP

のデバッグレベルのロギングをオンにしてください、https://github.com/plutext/docx4j/blob/master/src/samples/_resources/log4j.xml

これでコメントを参照してください。問題はhttp://www.docx4java.org/forums/pdf-output-f27/error-on-convert-pdf-with-fo-on-dox4j-3-3-1-t2446.html

で活発な議論中である。しかし、今https://github.com/plutext/docx4j-export-FO/issues/1

としてそれを追跡することはあなたのFOP 2.1はMavenの由来は、どこかELS e?

+0

クラスパスにバティックジャーとjaxb-xslfo-1.0.1.jarはありますか? http://www.docx4java.org/docx4j/docx4j-export-fo-nightly-20161012.jarを試して、スタックトレースを報告してください – JasonPlutext

関連する問題