Page 1 of 1

java.lang.ClassCastException: org.docx4j.openpackaging.parts

PostPosted: Thu Oct 11, 2018 10:56 pm
by deepak_rai
Code: Select all
File inFile = new File("D:/TestDocstoPDF/NEWFILE/QuoteSignatureTemplate.docx");
         OutputStream os = new java.io.FileOutputStream("D:/TestDocstoPDF/NEWFILE/New103mysytemfile.pdf");
         InputStream inputStream = new FileInputStream(inFile);
         WordprocessingMLPackage wordMLPackage =  WordprocessingMLPackage.load(inputStream);
         Mapper fontMapper = new IdentityPlusMapper();
         wordMLPackage.setFontMapper(fontMapper);
         FOSettings foSettings = Docx4J.createFOSettings();
         foSettings.setWmlPackage(wordMLPackage);
         foSettings.setFoDumpFile(new File("D:/TestDocstoPDF/NEWFILE/New103mysytemfile.pdfreport.fo"));
         Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);


I am trying to convert docx file to PDF which contains multiple image but I am getting this Exception
Code: Select all


java.lang.ClassCastException: org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart cannot be cast to org.docx4j.openpackaging.parts.WordprocessingML.ObfuscatedFontPart
at org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart.getObfuscatedFontFromRelationship(FontTablePart.java:142)
at org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart.processEmbeddings(FontTablePart.java:118)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.setFontMapper(WordprocessingMLPackage.java:360)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.setFontMapper(WordprocessingMLPackage.java:309)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.getFontMapper(WordprocessingMLPackage.java:376)
at org.docx4j.convert.out.common.preprocess.PartialDeepCopy.process(PartialDeepCopy.java:95)
at org.docx4j.convert.out.common.Preprocess.process(Preprocess.java:77)
at org.docx4j.convert.out.common.Preprocess.process(Preprocess.java:135)
at org.docx4j.convert.out.common.AbstractWmlExporter.preprocess(AbstractWmlExporter.java:51)
at org.docx4j.convert.out.common.AbstractWmlExporter.preprocess(AbstractWmlExporter.java:32)
at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:64)
at org.docx4j.Docx4J.toFO(Docx4J.java:568)
at org.docx4j.Docx4J.toPDF(Docx4J.java:583)
at org.docx4j.convert.out.pdf.viaXSLFO.Conversion.output(Conversion.java:70)
at com.yeokhengmeng.docstopdfconverter.DocxToPDFConverter.convert(DocxToPDFConverter.java:61)
at com.yeokhengmeng.docstopdfconverter.MainClass.main(MainClass.java:44)
org.docx4j.openpackaging.exceptions.Docx4JException: Exception exporting package
org.docx4j.openpackaging.exceptions.Docx4JException: Exception exporting package
at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:109)
at org.docx4j.Docx4J.toFO(Docx4J.java:568)
at org.docx4j.Docx4J.toPDF(Docx4J.java:583)
at org.docx4j.convert.out.pdf.viaXSLFO.Conversion.output(Conversion.java:70)
at com.yeokhengmeng.docstopdfconverter.DocxToPDFConverter.convert(DocxToPDFConverter.java:61)
at com.yeokhengmeng.docstopdfconverter.MainClass.main(MainClass.java:44)
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Error setting font mapper on copy
at org.docx4j.convert.out.common.preprocess.PartialDeepCopy.process(PartialDeepCopy.java:99)
at org.docx4j.convert.out.common.Preprocess.process(Preprocess.java:77)
at org.docx4j.convert.out.common.Preprocess.process(Preprocess.java:135)
at org.docx4j.convert.out.common.AbstractWmlExporter.preprocess(AbstractWmlExporter.java:51)
at org.docx4j.convert.out.common.AbstractWmlExporter.preprocess(AbstractWmlExporter.java:32)
at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:64)
... 5 more
Caused by: java.lang.ClassCastException: org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart cannot be cast to org.docx4j.openpackaging.parts.WordprocessingML.ObfuscatedFontPart
at org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart.getObfuscatedFontFromRelationship(FontTablePart.java:142)
at org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart.processEmbeddings(FontTablePart.java:118)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.setFontMapper(WordprocessingMLPackage.java:360)
at org.docx4j.convert.out.common.preprocess.PartialDeepCopy.process(PartialDeepCopy.java:94)
... 10 more

My docx file is

Re: java.lang.ClassCastException: org.docx4j.openpackaging.p

PostPosted: Fri Oct 12, 2018 10:51 am
by jason
How was this document created?

The "embedded" fonts eg

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/font" Target="fonts/HelveticaNeue-italic.ttf"/>
 
Parsed in 0.000 seconds, using GeSHi 1.0.8.4


are not what docx4j expects.

Notice that if you open the docx then save it in Word, it drops those parts.

And if you open the docx then save it in Word choosing to embed the fonts, you get rels such as:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
<Relationship Target="fonts/font6.odttf" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/font" Id="rId6"/>
 
Parsed in 0.000 seconds, using GeSHi 1.0.8.4


which are of expected type application/vnd.openxmlformats-officedocument.obfuscatedFont