前言
java实现word文档转PDF,PDF转word
解决只能转换4页问题
解决每页头部存在水印问题
实现
引入依赖
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>1.0.3</version>
</dependency>
破解的jar包
链接: https://pan.baidu.com/s/1MO8OBuf4FQ937R9KDtofPQ 提取码: 4tsn
java">word">package com.common.util;
word">import com.aspose.pdf.Document;
word">import com.aspose.pdf.SaveFormat;
word">import com.documents4j.api.DocumentType;
word">import com.documents4j.api.IConverter;
word">import com.documents4j.job.LocalConverter;
word">import java.io.*;
/**
* PDF转换工具类
* @author yyq
*/
word">public word">class PdfUtil {
word">public word">static word">void main(String[] args) {
//pdfToObj("C:\\Users\\Administrator\\Desktop\\测试.pdf", "docx");
String filePath = "C:\\Users\\Administrator\\Desktop\\测试.docx";
String outFilePath = "C:\\Users\\Administrator\\Desktop\\测试.pdf";
objToPdf(filePath, outFilePath, "docx");
}
/**
* PDF 转 doc、Excel、xml
* @param pdfPath 需要转换的pdf路径
* @param suffix 文件后缀
*/
word">public word">static word">void pdfToObj(String pdfPath, String suffix) {
word">long old = System.currentTimeMillis();
FileOutputStream os = word">null;
word">try {
// 新建一个word文档
String wordPath = pdfPath.substring(0, pdfPath.lastIndexOf(".")) + "." + suffix;
os = word">new FileOutputStream(wordPath);
// doc是将要被转化的word文档
Document doc = word">new Document(pdfPath);
// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
word">if(suffix.equals("doc")){
doc.save(os, SaveFormat.Doc);
}word">else word">if(suffix.equals("docx")){
doc.save(os, SaveFormat.DocX);
}word">else word">if(suffix.equals("xls") || suffix.equals("xlsx")){
doc.save(os, SaveFormat.Excel);
}word">else word">if(suffix.equals("html")){
doc.save(os, SaveFormat.Html);
}word">else word">if(suffix.equals("xml")){
doc.save(os, SaveFormat.Xml);
}
os.close();
// 转化耗时
word">long now = System.currentTimeMillis();
word">long useTime = ((now - old) / 1000);
System.out.println("Pdf 转 Word 共耗时:" + useTime + "秒");
} word">catch (Exception e) {
System.out.println("Pdf 转 Word 失败...");
e.printStackTrace();
}word">finally {
word">try {
os.close();
} word">catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* txt、doc、Excel、xml 转 PDF
* @param oidPath 需要转的文件路径
* @param newPath 转成的PDF文件路径
*/
word">public word">static word">void objToPdf(String oidPath, String newPath, String suffix){
InputStream inputStream = word">null;
OutputStream outputStream = word">null;
IConverter converter = word">null;
word">try {
// 源文件地址
File oidFile = word">new File(oidPath);
// 导出文件地址
File newFile = word">new File(newPath);
// 文件读取
inputStream = word">new FileInputStream(oidFile);
outputStream = word">new FileOutputStream(newFile);
// 开始转换
converter = LocalConverter.builder().build();
word">boolean flag = false;
word">if(suffix.equals("doc")){
flag = converter.convert(inputStream).as(DocumentType.DOC).word">to(outputStream).as(DocumentType.PDF).execute();
}word">else word">if(suffix.equals("docx")){
flag = converter.convert(inputStream).as(DocumentType.DOCX).word">to(outputStream).as(DocumentType.PDF).execute();
}word">else word">if(suffix.equals("txt")){
flag = converter.convert(inputStream).as(DocumentType.TEXT).word">to(outputStream).as(DocumentType.PDF).execute();
}word">else word">if(suffix.equals("xls")){
flag = converter.convert(inputStream).as(DocumentType.XLS).word">to(outputStream).as(DocumentType.PDF).execute();
}word">else word">if(suffix.equals("xlsx")){
flag = converter.convert(inputStream).as(DocumentType.XLSX).word">to(outputStream).as(DocumentType.PDF).execute();
}word">else word">if(suffix.equals("html")){
flag = converter.convert(inputStream).as(DocumentType.MHTML).word">to(outputStream).as(DocumentType.PDF).execute();
}word">else word">if(suffix.equals("xml")){
flag = converter.convert(inputStream).as(DocumentType.XML).word">to(outputStream).as(DocumentType.PDF).execute();
}
word">if (flag) {
converter.shutDown();
}
inputStream.close();
outputStream.close();
System.out.println("转换成功");
} word">catch (Exception e) {
converter.shutDown();
e.printStackTrace();
System.out.println("转换失败");
}word">finally {
word">try {
inputStream.close();
outputStream.close();
} word">catch (IOException e) {
e.printStackTrace();
}
}
}
}
源码路径:https://download.csdn.net/download/weixin_43992507/88215577