您的位置:

JavaWord转PDF详解

一、环境准备

在使用JavaWord转PDF之前,需要保证操作系统已经安装了Microsoft Office Word和Adobe Acrobat,同时需要在项目中引入iText和poi两个jar包。

//iText jar包引入

   
   com.itextpdf
   
   
   itextpdf
   
   
   5.5.13
   

  

//poi jar包引入

   
   org.apache.poi
   
   
   poi
   
   
   3.17
   

  

二、代码实现Word转PDF

这里介绍两种实现Word转PDF的方式,一种是使用iText方式,另一种是使用poi方式。

1.使用iText实现Word转PDF

使用iText方式,主要是通过解析Word中的内容,将解析出来的内容写入PDF文件。

public void wordToPdf(String sourcePath, String targetPath) throws Exception {

    // 1.创建word文档输入流对象
    FileInputStream wordFileStream = new FileInputStream(sourcePath);

    // 2.创建word文档对象
    XWPFDocument document = new XWPFDocument(wordFileStream);

    // 3.创建PDF文档输出流对象
    FileOutputStream pdfFileStream = new FileOutputStream(targetPath);

    // 4.创建PDF文档对象
    PdfWriter writer = PdfWriter.getInstance(document, pdfFileStream);
    writer.setInitialLeading(12);

    // 5.打开PDF文档
    document.open();

    // 6.解析word文档内容
    List paragraphList = document.getParagraphs();
    for (XWPFParagraph paragraph : paragraphList) {
        String text = paragraph.getText();
        document.add(new Paragraph(text));
    }

    // 7.关闭PDF文档
    document.close();
    pdfFileStream.close();
    wordFileStream.close();
}

  

2.使用poi实现Word转PDF

使用poi方式,需要首先将Word文档转化为html格式,然后再通过解析html文件内容,将内容写入PDF文件。

public void wordToPdf(String sourcePath, String targetPath) throws Exception {

    // 1.创建word文档输入流对象
    FileInputStream wordFileStream = new FileInputStream(sourcePath);

    // 2.创建word文档对象
    HWPFDocument document = new HWPFDocument(wordFileStream);

    // 3.创建word文档内容输出流对象
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
    wordToHtmlConverter.processDocument(document, byteArrayOutputStream);

    // 4.创建html文档字符串
    String html = byteArrayOutputStream.toString();

    // 5.创建PDF文档输出流对象
    FileOutputStream pdfFileStream = new FileOutputStream(targetPath);
    ByteArrayOutputStream pdfWriterByteStream = new ByteArrayOutputStream();
    Document pdfDocument = new Document();
    PdfWriter pdfWriter = PdfWriter.getInstance(pdfDocument, pdfWriterByteStream);

    // 6.打开PDF文档
    pdfDocument.open();

    // 7.解析html文档内容
    ByteArrayOutputStream htmlStream = new ByteArrayOutputStream();
    htmlStream.write(html.getBytes());
    XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, pdfDocument, new ByteArrayInputStream(htmlStream.toByteArray()));

    // 8.关闭PDF文档
    pdfDocument.close();
    pdfFileStream.write(pdfWriterByteStream.toByteArray());
    pdfFileStream.flush();
    pdfFileStream.close();
    wordFileStream.close();
}

三、转换效果展示

下面分别展示使用iText和poi方式实现的Word转PDF效果。

1.iText方式实现Word转PDF效果

JavaWord转PDF详解

2.poi方式实现Word转PDF效果

JavaWord转PDF详解

四、总结

本篇文章主要介绍了JavaWord转PDF的实现方法,包括环境准备、iText方式实现和poi方式实现,并展示了转换效果。希望对需要将Word文档转换为PDF格式的读者有所帮助。