Converting Word to Pdf in Java Example

Converting Word to Pdf in Java:
Jars:

avalon-framework-4.1.5
commons-io-2.4
docx4j-2.7.1
log4j-1.2.15
serializer-2.7.1
xmlgraphics-commons-1.3
batik-util-1.6-1
commons-logging-1.1.3
fop-0.93
xalan-2.7.1

Java Program:

package in.javadomain;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.docx4j.convert.out.pdf.viaXSLFO.PdfSettings;
import org.docx4j.fonts.IdentityPlusMapper;
import org.docx4j.fonts.Mapper;
import org.docx4j.fonts.PhysicalFont;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

public class Word2Pdf {
	public static void main(String[] args) {
		try {
			
			long start = System.currentTimeMillis();

			InputStream is = new FileInputStream(
					new File("D:\\javadomain.docx"));
			WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
					.load(is);
			List sections = wordMLPackage.getDocumentModel().getSections();
			for (int i = 0; i < sections.size(); i++) {

				System.out.println("sections Size" + sections.size());
				wordMLPackage.getDocumentModel().getSections().get(i)
						.getPageDimensions().setHeaderExtent(3000);
			}
			Mapper fontMapper = new IdentityPlusMapper();

			PhysicalFont font = PhysicalFonts.getPhysicalFonts().get(
					"Comic Sans MS");

			fontMapper.getFontMappings().put("Algerian", font);

			wordMLPackage.setFontMapper(fontMapper);
			PdfSettings pdfSettings = new PdfSettings();
			org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
					wordMLPackage);

			OutputStream out = new FileOutputStream(new File(
					"D:\\javadomain.pdf"));
			conversion.output(out, pdfSettings);
			System.err.println("Time taken to Generate pdf  "
					+ (System.currentTimeMillis() - start) + "ms");

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Input [word file]

word input

Output [pdf file]

pdf output

Recommended Books:

1,948 total views, 5 views today

2 comments

  • If the code above does not work for all your Word documents, please consider our java library jWordConvert.

    It takes 2 lines to convert a Word document to PDF:

    // Load the Word document
    WordDocument wdoc = new WordDocument ("input.doc");

    // Save the document as a PDF file
    wdoc.saveAsPDF ("output.pdf");

  • Nivash

    Hi Mirthbees ,

    Your tutorial is good. I have generated PDF file. But ‘ TO HIDE THESE MESSAGES, TURN OFF log4j debug level logging for org.docx4j.convert.out.pdf.viaXSLFO ‘ message come by default. So to hide this message , I have used ” org.docx4j.convert.out.pdf.viaXSLFO.Conversion.log.setLevel(Level.OFF); ” line. But problem is when generating war its making problem.

Leave a Reply

Your email address will not be published. Required fields are marked *