Java实现Word文档转PDF,PDF转Word,PDF转Excel,PDF转换工具

前言

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

相关推荐
basketball6169 小时前
C++ NULL 和 nullptr 区别 以及 nullptr 的核心实现
java·开发语言·c++
JAVA面经实录91710 小时前
MyBatis面试题库
java·mybatis
小江的记录本10 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
小江的记录本10 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:G1:Region分区、Mixed GC、回收流程、适用场景(高频)(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·spring cloud·面试
摇滚侠11 小时前
Java 零基础全套教程,反射机制,笔记 187-188
java·开发语言·笔记
超梦dasgg11 小时前
Java 生产环境第三方对接安全保障方案
java·开发语言·安全
w20180012 小时前
申论答题纸模板大作文格子纸及行测答题卡PDF可打印
pdf
日月云棠12 小时前
9 Double 与 Float —— IEEE 754 浮点数在 Java 中的实现
java·后端
Refrain_zc12 小时前
Android 二维码登录轮询机制:从扫码到登录的完整客户端实现
java
z落落12 小时前
C#参数区别
java·算法·c#