简单实现PDF转换为WORD,去水印

注:包引用的为spire免费版,转换为word有页数限制,可以做循环遍历来实现大文件的转换

package com.jiang.service.impl;

import com.jiang.service.Pdf2AnyService;
import com.jiang.service.vo.Pdf2AnyVO;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


/**
 * @Description TODO
 * @Created jiang
 */
@Service
public class Pdf2AnyServiceImpl implements Pdf2AnyService {

    private String docPath = "./doc/";

    @Override
    public Pdf2AnyVO pdf2word(MultipartFile file) throws IOException {
        Pdf2AnyVO result = new Pdf2AnyVO();
        String fileName = file.getOriginalFilename();
        String desPath = fileName.substring(0, fileName.length() - 4) + ".docx";

        File f1 = new File(docPath);
        if (!f1.exists()) {
            f1.mkdirs();
        }

        //加载pdf
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromBytes(file.getBytes());
        //本地文件
        pdf.saveToFile(docPath + desPath, FileFormat.DOCX);

        //重新读取生成的文档
        InputStream is = new FileInputStream(new File(docPath + desPath));
        XWPFDocument document = new XWPFDocument(is);
        //以上Spire.Doc 生成的文件会自带警告信息,这里来删除Spire.Doc 的警告
        document.removeBodyElement(0);
        //输出word内容文件流,新输出路径位置
        OutputStream os = new FileOutputStream(docPath + desPath);
        try {
            document.write(os);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                is.close();
            }
            if (os != null) {
                os.close();
            }
        }

        result.setFileName(desPath);
        return result;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值