![](/img/trans.png)
[英]NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException when executing outside IDE
[英]docx4j 3.0 pdf export failing with Docx4JException
我正在嘗試使用docx4j 3.0加載現有的docx文件,進行一些簡單的文本更改並另存為PDF。 我的代碼如下所示:
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load (new File (template));
MainDocumentPart doc = wordMLPackage.getMainDocumentPart ();
try
{
VariablePrepare.prepare (wordMLPackage);
}
catch (Exception e)
{
System.err.println ("Warning: VariablePrepare failed: " + e);
}
(here I enumerate all Text nodes and make changes as required)
PdfConversion c = new Conversion (wordMLPackage);
try (FileOutputStream out = new FileOutputStream (outputFile)) {
c.output (out, new PdfSettings ());
}
這將產生以下異常:
org.docx4j.openpackaging.exceptions.Docx4JException: Exception exporting package
at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:79)
at org.docx4j.Docx4J.toFO(Docx4J.java:467)
at org.docx4j.Docx4J.toPDF(Docx4J.java:477)
at org.docx4j.convert.out.pdf.viaXSLFO.Conversion.output(Conversion.java:70)
at net.meridiandigital.binco.invoicegen.InvoiceGenerator.generateFile(InvoiceGenerator.java:80)
at net.meridiandigital.binco.invoicegen.Test.main(Test.java:46)
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Exception loading default template "org/docx4j/convert/out/fo/docx2fo.xslt", Cannot convert argument/return type in call to method 'org.docx4j.convert.out.common.XsltCommonFunctions.notImplemented(reference, node-type, string)'
at org.docx4j.convert.out.common.AbstractXsltExporterDelegate.loadDefaultTemplates(AbstractXsltExporterDelegate.java:92)
at org.docx4j.convert.out.common.AbstractXsltExporterDelegate.getDefaultTemplate(AbstractXsltExporterDelegate.java:75)
at org.docx4j.convert.out.common.AbstractXsltExporterDelegate.getTemplates(AbstractXsltExporterDelegate.java:66)
at org.docx4j.convert.out.common.AbstractXsltExporterDelegate.process(AbstractXsltExporterDelegate.java:57)
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:71)
... 5 more
Caused by: javax.xml.transform.TransformerConfigurationException: Cannot convert argument/return type in call to method 'org.docx4j.convert.out.common.XsltCommonFunctions.notImplemented(reference, node-type, string)'
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:945)
at org.docx4j.XmlUtils.getTransformerTemplate(XmlUtils.java:842)
at org.docx4j.convert.out.common.AbstractXsltExporterDelegate.loadDefaultTemplates(AbstractXsltExporterDelegate.java:88)
... 11 more
任何想法出什么事了嗎?
它不應該使用
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
反而
org.apache.xalan.processor.TransformerFactoryImpl
(您需要在類路徑上使用真正的Xalan)
另請參見https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/XmlUtils.java的第224行的InstantiateTransformerFactory()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.