Aspose.Words word 转 pdf、pdf 转 图片(文末jar包)


import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.aspose.words.Document;
import com.aspose.words.SaveFormat;

public class PdfUtil {

    

            //判断本地文件是否存在
            @RequestMapping(params = "fileexists")
            @ResponseBody
            public boolean Fileexists(String filename) {
                System.out.println("filename------->"+filename);
                File file = new File(filename);
                if (file.exists()) {
                    System.out.println("存在");
                    return true;
                }
                else {
                    System.out.println("不存在");
                    return false;
                }
            }

    /**
     * word to pdf
     * @param inPath  word 全路径
     * @param outPath 生成的pdf 全路径
     * @author an
     * @throws Exception
     */
    public String doc2pdf(String inPath, String outPath) throws Exception {
        String path = outPath.substring(0, outPath.lastIndexOf("/"));
        File file = null;
        file = new File(path);
        if (!file.exists()) {//创建文件夹
            file.mkdirs();
        }
        file = new File(outPath);  //新建一个空白pdf文档
        FileOutputStream os = new FileOutputStream(file);
        Document doc = new Document(inPath); // Address是将要被转化的word文档

        doc.save(os, SaveFormat.PDF);// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,
        // EPUB, XPS, SWF 相互转换
        os.close();
        return null;
    }

    /**
     * pdf转图片,返回文件保存的路径
     * @param inputFile 输入需要转的pdf全路径
     * @param outputUrl 转换完成后保存的链接
     * @throws Exception
     */
    public  int pdfToImage(String inputFile, String outputUrl)
            throws Exception {
        int i;
        File file = new File(inputFile);
        File output=new File(outputUrl);
        //如果保存路径不存在,创建路径
        if(!output.exists()){
            output.mkdirs();
        }
        PDDocument doc = PDDocument.load(file);
        PDFRenderer renderer = new PDFRenderer(doc);
        int pageCount = doc.getNumberOfPages();
        String[] urls=new String[pageCount];
        for ( i = 0; i < pageCount; i++) {
            //设置图片转换的分辨率
            BufferedImage image = renderer.renderImage(i, 1.5f);
            //文件保存的路径
            urls[i]= (i + 1) + ".png";
            ImageIO.write(image, "PNG", new File(outputUrl+urls[i]));
        }
        System.out.println("i===========>"+i);
        System.out.println("转化成功");
        return i;
    }

    /**
     * pdf 转换成   一张图片
     * @param pdfFile
     * @param outpath
     */

    public  void pdf2multiImage(String pdfFile, String outpath) {
        try {
            InputStream is = new FileInputStream(pdfFile);
            PDDocument pdf = PDDocument.load(is);
            int actSize  = pdf.getNumberOfPages();
            List<BufferedImage> piclist = new ArrayList<BufferedImage>();
            for (int i = 0; i < actSize; i++) {
            BufferedImage  image = new PDFRenderer(pdf).renderImageWithDPI(i,130, ImageType.RGB);
                piclist.add(image);
            }
            File output=new File(outpath);
            //如果保存路径不存在,创建路径
            if(!output.exists()){
                output.mkdirs();
            }
            yPic(piclist, outpath);
            is.close();
            System.out.println("success");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static void pdf2multiImage(InputStream is, String outpath) {
           try {
               PDDocument pdf = PDDocument.load(is);
               int actSize  = pdf.getNumberOfPages();
               List<BufferedImage> piclist = new ArrayList<BufferedImage>();
               for (int i = 0; i < actSize; i++) {
                BufferedImage  image = new PDFRenderer(pdf).renderImageWithDPI(i,130, ImageType.RGB);
                   piclist.add(image);
               }
               yPic(piclist, outpath);
               is.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }

    /**
     * 将宽度相同的图片,竖向追加在一起 ##注意:宽度必须相同
     *
     * @param piclist
     *            文件流数组
     * @param outPath
     *            输出路径
     */
    public static void yPic(List<BufferedImage> piclist, String outPath) {// 纵向处理图片
        if (piclist == null || piclist.size() <= 0) {
            System.out.println("图片数组为空!");
            return;
        }
        try {
            int height = 0, // 总高度
            width = 0, // 总宽度
            _height = 0, // 临时的高度 , 或保存偏移高度
            __height = 0, // 临时的高度,主要保存每个高度
            picNum = piclist.size();// 图片的数量
            int[] heightArray = new int[picNum]; // 保存每个文件的高度
            BufferedImage buffer = null; // 保存图片流
            List<int[]> imgRGB = new ArrayList<int[]>(); // 保存所有的图片的RGB
            int[] _imgRGB; // 保存一张图片中的RGB数据
            for (int i = 0; i < picNum; i++) {
                buffer = piclist.get(i);
                heightArray[i] = _height = buffer.getHeight();// 图片高度
                if (i == 0) {
                    width = buffer.getWidth();// 图片宽度
                }
                height += _height; // 获取总高度
                _imgRGB = new int[width * _height];// 从图片中读取RGB
                _imgRGB = buffer.getRGB(0, 0, width, _height, _imgRGB, 0, width);
                imgRGB.add(_imgRGB);
            }
            _height = 0; // 设置偏移高度为0
            // 生成新图片
            BufferedImage imageResult = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            for (int i = 0; i < picNum; i++) {
                __height = heightArray[i];
                if (i != 0) _height += __height; // 计算偏移高度
                imageResult.setRGB(0, _height, width, __height, imgRGB.get(i), 0, width); // 写入流中
            }
            File outFile = new File(outPath);
            ImageIO.write(imageResult, "png", outFile);// 写图片
        } catch (Exception e) {
            e.printStackTrace();
        }
    }



}

 Aspose.Words  jar包:

   链接:https://pan.baidu.com/s/1xIq7G_sqKPNULtIt8VZtPQ 

   提取码:ykf6 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM