package com.yeokhengmeng.docstopdfconverter; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import org.docx4j.Docx4J; import org.docx4j.convert.in.Doc; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; public class DocToPDFConverter extends Converter { public DocToPDFConverter(InputStream inStream, OutputStream outStream, boolean showMessages, boolean closeStreamsWhenComplete) { super(inStream, outStream, showMessages, closeStreamsWhenComplete); } @Override public void convert() throws Exception{ loading(); InputStream iStream = inStream; WordprocessingMLPackage wordMLPackage = getMLPackage(iStream); processing(); Docx4J.toPDF(wordMLPackage, outStream); finished(); } protected WordprocessingMLPackage getMLPackage(InputStream iStream) throws Exception{ PrintStream originalStdout = System.out; //Disable stdout temporarily as Doc convert produces alot of output System.setOut(new PrintStream(new OutputStream() { public void write(int b) { //DO NOTHING } })); WordprocessingMLPackage mlPackage = Doc.convert(iStream); System.setOut(originalStdout); return mlPackage; } }