For everyone, who faced this problem too.
Here are necessary steps to make docx4j works fine with images:
- Add missed classes from OpenJDK to appropriate packages with
ae
. - Change references to new classes, for example
sun.awt.AppContext
toae.sun.awt.AppContext
. In
org.apache.xmlgraphics.util.Service
manually fill list with preloaders:private static List<String> getProviderNames(Class<?> cls, ClassLoader cl) { ... if (fillDefautsProviderNames(cls, l)) return l; ... } private static boolean fillDefautsProviderNames(Class<?> cls, List<String> l) { if (cls == org.apache.xmlgraphics.image.loader.spi.ImagePreloader.class) { l.add("org.apache.xmlgraphics.image.loader.impl.PreloaderTIFF"); l.add("org.apache.xmlgraphics.image.loader.impl.PreloaderGIF"); l.add("org.apache.xmlgraphics.image.loader.impl.PreloaderJPEG"); l.add("org.apache.xmlgraphics.image.loader.impl.PreloaderBMP"); l.add("org.apache.xmlgraphics.image.loader.impl.PreloaderEMF"); l.add("org.apache.xmlgraphics.image.loader.impl.PreloaderEPS"); l.add("org.apache.xmlgraphics.image.loader.impl.imageio.PreloaderImageIO"); return true; } return false; }
Delete function
displayImageInfo(ImageInfo info)
inorg.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage
.
I've prepared repositories with changes: ae-awt, ae-xmlgraphics-commons, docx4j-android.
You can find compiled libs here: docx4j_images_prepared_libs.zip
Enjoy!