富文本框上传pdf文件并预览

以百度编辑器ueditor为例

上传图片调用的action为 uploadimage 

在config.json中开放pdf的格式校验

然后在 BinaryUploader 中修改代码,判断如果是pdf文件,则调用pdf转图片的方法,把图片保存下来,然后返回相应地址

package test;
 
 
 
import java.awt.image.BufferedImage;
 
import java.io.File;
 
import java.io.IOException;
 
 
 
import javax.imageio.ImageIO;
 
 
 
import org.apache.pdfbox.pdmodel.PDDocument;
 
import org.apache.pdfbox.rendering.PDFRenderer;
 
 
 
import com.lowagie.text.pdf.PdfReader;
 
 
 
public class PDF2IMAGE {
 
    public static void main(String[] args) {
 
        pdf2Image("D:/1.pdf", "D:/pdf", 300);
 
    }
 
 
 
    /***
     * PDF文件转PNG图片,全部页数
     * 
     * @param PdfFilePath pdf完整路径
     * @param imgFilePath 图片存放的文件夹
     * @param dpi dpi越大转换后越清晰,相对转换速度越慢
     * @return
     */
 
    public static void pdf2Image(String PdfFilePath, String dstImgFolder, int dpi) {
 
        File file = new File(PdfFilePath);
 
        PDDocument pdDocument;
 
        try {
 
            String imgPDFPath = file.getParent();
 
            int dot = file.getName().lastIndexOf('.');
 
            String imagePDFName = file.getName().substring(0, dot); // 获取图片文件名
 
            String imgFolderPath = null;
 
            if (dstImgFolder.equals("")) {
 
                imgFolderPath = imgPDFPath + File.separator + imagePDFName;// 获取图片存放的文件夹路径
 
            } else {
 
                imgFolderPath = dstImgFolder + File.separator + imagePDFName;
 
            }
 
 
 
            if (createDirectory(imgFolderPath)) {
 
 
 
                pdDocument = PDDocument.load(file);
 
                PDFRenderer renderer = new PDFRenderer(pdDocument);
 
                /* dpi越大转换后越清晰,相对转换速度越慢 */
 
                PdfReader reader = new PdfReader(PdfFilePath);
 
                int pages = reader.getNumberOfPages();
 
                StringBuffer imgFilePath = null;
 
                for (int i = 0; i < pages; i++) {
 
                    String imgFilePathPrefix = imgFolderPath + File.separator + imagePDFName;
 
                    imgFilePath = new StringBuffer();
 
                    imgFilePath.append(imgFilePathPrefix);
 
                    imgFilePath.append("_");
 
                    imgFilePath.append(String.valueOf(i + 1));
 
                    imgFilePath.append(".png");
 
                    File dstFile = new File(imgFilePath.toString());
 
                    BufferedImage image = renderer.renderImageWithDPI(i, dpi);
 
                    ImageIO.write(image, "png", dstFile);
 
                }
 
                System.out.println("PDF文档转PNG图片成功!");
 
 
 
            } else {
 
                System.out.println("PDF文档转PNG图片失败:" + "创建" + imgFolderPath + "失败");
 
            }
 
 
 
        } catch (IOException e) {
 
            e.printStackTrace();
 
        }
 
    }
 
 
 
    private static boolean createDirectory(String folder) {
 
        File dir = new File(folder);
 
        if (dir.exists()) {
 
            return true;
 
        } else {
 
            return dir.mkdirs();
 
        }
 
    }
 
 
 
}
原文地址:https://www.cnblogs.com/forthelichking/p/11821444.html