pdf轉圖片

pdf轉圖片png 

 public void uploadFile(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {

      String fileName = file.getOriginalFilename();
         
            if(!CheckUtil.isNull(fileName) && (fileName.indexOf("PDF")>-1 ||fileName.indexOf("pdf")>-1)){
                CommonsMultipartFile cf= (CommonsMultipartFile)file;
                DiskFileItem fi = (DiskFileItem)cf.getFileItem();
                File fileTemp = fi.getStoreLocation();
                if(fileTemp!=null){
                    file=PDFReader.pdf2Pic(fileTemp.getAbsolutePath());
                }

                fileName=file.getOriginalFilename();
            }
}



PDFReader.java


package com.datacenter.jeefp.common.utils.pdf;

import com.datacenter.jeefp.common.file.FileUcloudUpdate;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.text.PDFTextStripper;
import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.util.GraphicsRenderingHints;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.w3c.dom.Document;


import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.RenderedImage;
import java.awt.image.WritableRaster;
import java.io.*;


public class PDFReader {

    public static void main(String[] args)  {
        MultipartFile file=null;
        pdfToImage(file);
    }

    /**
     * 解析pdf文件轉圖片 清晰度不好
     *
     * @param
     */
    public static File  pdfToImage(MultipartFile file) {
//        File file = new File("E:/177SVANZN46741A二維碼(1).PDF");
//        String fileYgtPath = "";
        File dfile=null;
        try {
            CommonsMultipartFile cf= (CommonsMultipartFile)file;
            DiskFileItem fi = (DiskFileItem)cf.getFileItem();
            File fileTemp = fi.getStoreLocation();
            PDDocument doc = PDDocument.load(fileTemp);
            PDFRenderer renderer = new PDFRenderer(doc);
            int pageCount = doc.getNumberOfPages();
            for (int i = 0; i < pageCount; i++) {
                BufferedImage image = renderer.renderImageWithDPI(i, 296);
//                BufferedImage image = renderer.renderImage(i, 2.5f);
//              fileYgtPath = FileUcloudUpdate.compressStreamToTemp(file,file.getOriginalFilename());
                ImageIO.write(image, "PNG", new File("D:\\pdfbox.png"));
                dfile = new File("D:\\pdfbox.png");
                return dfile;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return dfile;
    }
    /**
     * 解析pdf文件轉圖片 清晰度不好
     *
     * @param
     */
    public static MultipartFile pdf2Pic(String pdfPath){
        org.icepdf.core.pobjects.Document document = new org.icepdf.core.pobjects.Document();
        MultipartFile mfile=null;
        try {
            document.setFile(pdfPath);
            //縮放比例
            float scale = 2.5f;
            //旋轉角度
            float rotation = 0f;
            BufferedImage image = (BufferedImage)
                    document.getPageImage(0, GraphicsRenderingHints.SCREEN, org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX, rotation, scale);
//            RenderedImage rendImage = image;
            try {
                File file = new File("D:\\pdfbox.png");
                ImageIO.write(image, "png", file);
            } catch (IOException e) {
                e.printStackTrace();
            }
            image.flush();
            document.dispose();
            File dfile = new File("D:\\pdfbox.png");
            FileInputStream fileInputStream = new FileInputStream(dfile);
            mfile = new MockMultipartFile(dfile.getName(), dfile.getName(),
                    "image/png", fileInputStream);
            return mfile;
        }catch(Exception e){
            e.printStackTrace();
        }
        return mfile;
    }
}

 

 

發佈了13 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章