目前幾個PDF轉圖片的JAVA開源項目研究

openkk 12年前發布 | 13K 次閱讀 需求分析 視頻會議 B2C

項目中要使用PDF的縮略圖,使用java幾個開源項目來對pdf轉換為圖片的工作。

參照了文章:http://javasogo.iteye.com/blog/1169234 

對比這幾款開源項目PDFRenderer、pdfbox、jpedal 的做法:

1.PDFRenderer: 確實效率最高,但是缺少字體支持對大多數中文pdf處理不了(很奇怪為什么項目組還沒做默認字體支持)

2.pdfbox:字體基本都可以轉換,但容易內存溢出(我搞了幾十M文件就不行了)

3.jpedal:效率不錯。不過我這里好幾個中文pdf文件就是生成縮略圖不對,我還向項目組提bug了

沒有辦法,在目前我遇到字體解決不了情況,我尋找到了ICEPDF,這個項目也有商業和開源的。我用了開源的ICEPDF-4.2.2 (最新有4.3了),它其實用了jpedal的字體支持庫,確能支持我手上的中文pdf,而且效率不錯(測試沒遇到內存溢出)。使用比較方便,這里把代碼 貼在這里:

public static final String FILETYPE_JPG = "jpg";
    public static final String SUFF_IMAGE = "." + FILETYPE_JPG;

/**
     * 將指定pdf文件的首頁轉換為指定路徑的縮略圖
     *@param filepath 原文件路徑,例如d:/test.pdf
     *@param imagepath 圖片生成路徑,例如 d:/test-1.jpg
     *@param zoom     縮略圖顯示倍數,1表示不縮放,0.3則縮小到30%
     */
    public static void tranfer(String filepath, String imagepath, float zoom)
            throws PDFException, PDFSecurityException, IOException {
        // ICEpdf document class
        Document document = null;

        float rotation = 0f;

        document = new Document();
        document.setFile(filepath);
        // maxPages = document.getPageTree().getNumberOfPages();

        BufferedImage img = (BufferedImage) document.getPageImage(0,
                GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation,
                zoom);

        Iterator iter = ImageIO.getImageWritersBySuffix(FILETYPE_JPG);
        ImageWriter writer = (ImageWriter) iter.next();
        File outFile = new File(imagepath);
        FileOutputStream out = new FileOutputStream(outFile);
        ImageOutputStream outImage = ImageIO.createImageOutputStream(out);
        writer.setOutput(outImage);
        writer.write(new IIOImage(img, null, null));
    }

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!