1
docx4j 3.0을 사용하여 기존 docx 파일을로드하고 간단한 텍스트 변경을 수행하고 PDF로 저장하려고합니다. 내 코드는 다음과 같습니다docx4j 3.0 Docx4JException으로 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
감사합니다. 오히려 불행한 점은 사용하는 로깅 시스템이 기본적으로 포함 된 유용한 메시지를 표시하지 않기로 결정한 것입니다 (개인적인 선호는 달리 구성되지 않는 한 모든 메시지를 표시하는 시스템이 될 것입니다). 로깅을 구성하는 방법을 알아 냈어, 나는 그것을 놓쳤다. :( – Jules
흥미롭게도, 클래스 패스에 xalan-2.7.1.jar가 있었지만, 필자가 어떻게 든 놓친 'serializer-2.7.1.jar'에 대한 전이 의존성이 있습니다. – Jules
(그리고, 예 – Jules