【JAVA】pdf轉圖片

最近java項目中使用到了pdf轉圖片的需求,在此記錄一下。java

1.基於GhostScriptapp

使用此方法要求運行環境安裝GhostScript。轉換使用的命令是:gs -sDEVICE=pngalpha -o %03d.png -sDEVICE=pngalpha -r144 test.pdfui

public static List<byte[]> pdf2image(String pdfFilePath) throws Exception{
        File tempDir = null;
        try{
            tempDir = Files.createTempDir();
            Process proc = new ProcessBuilder("gs", "-sDEVICE=pngalpha", "-o", tempDir + File.separator + "%03d.png", "-sDEVICE=pngalpha", "-r144", pdfFilePath)
                               .redirectErrorStream(true)
                               .start(); 
            
            ArrayList<String> output = new ArrayList<String>();
            BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while ((line = br.readLine()) != null)
                output.add(line);
            
            logger.info("執行gs命令的輸出:" + StringUtils.join(output, System.lineSeparator()));
            
            if (0 != proc.waitFor())
                throw new Exception("轉換失敗");
            
            File[] files = tempDir.listFiles();

            Arrays.sort(files, new Comparator<File>() {
                public int compare(File f1, File f2) {
                    return f1.getName().compareTo(f2.getName());
                }
            });
            
            List<byte[]> images = new ArrayList<>();
            for(File file : files)
                images.add(IOUtils.toByteArray(new FileInputStream(file)));
            
            return images;
            
            
        }finally{
            if(tempDir != null)
                FileUtils.deleteDirectory(tempDir);
        }
    }

其中GhostScript還有不少經常使用的命令,有興趣的能夠去看看:https://www.ghostscript.com/doc/current/Use.htmspa

2.基於ImageMagick3d

可是我項目中是但願把有多頁文件的pdf轉爲一張圖片,GhostScript老是把它轉爲多張圖片(我網上找了好久,沒找到轉爲一張圖片的命令,若是有小夥伴們有知道的,還但願分享下),因此我又在網上找到了ImageMagick,主要是找到了能夠把整個pdf轉爲一張圖片的命令,code

具體執行命令爲:convert test.pdf -append -flatten test.pnghtm

固然須要安裝ImageMagick,blog

安裝命令爲:yum install ImageMagick ImageMagick-devel圖片

相關文章
相關標籤/搜索