admin管理员组文章数量:1639258
前言
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/s/1MO8OBuf4FQ937R9KDtofPQ 提取码: 4tsn
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;
Document doc = null;
try {
// 新建一个word文档
String wordPath = pdfPath.substring(0, pdfPath.lastIndexOf(".")) + "." + suffix;
os = new FileOutputStream(wordPath);
// doc是将要被转化的word文档
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.flush();
os.close();
doc.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 {
if (os != null){
os.flush();
os.close();
}
if (doc != null){
doc.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.flush();
outputStream.close();
System.out.println("转换成功");
} catch (Exception e) {
converter.shutDown();
e.printStackTrace();
System.out.println("转换失败");
}finally {
try {
if (inputStream != null){
inputStream.close();
}
if (outputStream != null){
outputStream.flush();
outputStream.close();
}
if(converter != null){
converter.shutDown();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
源码路径:https://download.csdn/download/weixin_43992507/88215577
像流读取文件这些要关闭释放,不然异常报错文件的读取不会断开的
Excel转PDF的实现方式可以参考:https://blog.csdn/m0_37969960/article/details/105519581
版权声明:本文标题:Java实现Word文档转PDF,PDF转Word,PDF转Excel,PDF转换工具 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729280825a1194012.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论