Word转PDF(Java实现)

来源:互联网 发布:工业设计主流软件 编辑:程序博客网 时间:2024/06/01 10:11

目前在做一个与文档有关的项目,网上看到的都是利用OpenOffice来转化word为pdf的,其实局限性很大,下载那么大一个软件,却只是为了它的服务。所以决定找一下有没有别的方法,终于遇到了docx4j这个神一样的JAR包,完美解决了我的问题!不说了,直接上代码!

所需Jar包
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

代码:

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();        }    }}
0 0
原创粉丝点击