一、环境准备
在使用JavaWord转PDF之前,需要保证操作系统已经安装了Microsoft Office Word和Adobe Acrobat,同时需要在项目中引入iText和poi两个jar包。
//iText jar包引入//poi jar包引入 com.itextpdf itextpdf 5.5.13 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文档内容 ListparagraphList = 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效果
2.poi方式实现Word转PDF效果
四、总结
本篇文章主要介绍了JavaWord转PDF的实现方法,包括环境准备、iText方式实现和poi方式实现,并展示了转换效果。希望对需要将Word文档转换为PDF格式的读者有所帮助。