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