There are many conversion methods. One of the methods used is using POI and DOCX4j.
InputStream is = new FileInputStream(new File("your Docx PAth")); WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage .load(is); List sections = wordMLPackage.getDocumentModel().getSections(); for (int i = 0; i < sections.size(); i++) { wordMLPackage.getDocumentModel().getSections().get(i) .getPageDimensions(); } Mapper fontMapper = new IdentityPlusMapper(); PhysicalFont font = PhysicalFonts.getPhysicalFonts().get( "Comic Sans MS");//set your desired font 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); //To turn off logger List<Logger> loggers = Collections.<Logger> list(LogManager .getCurrentLoggers()); loggers.add(LogManager.getRootLogger()); for (Logger logger : loggers) { logger.setLevel(Level.OFF); } OutputStream out = new FileOutputStream(new File("Your OutPut PDF path")); conversion.output(out, pdfSettings); System.out.println("DONE!!");
This works fine and is even tested on multiple DOCX files.
source share