javaはpdfサムネイルを生成します.

3556 ワード

プロジェクトではPDFのサムネイルを使用して、javaのいくつかのオープンソースプロジェクトを使用して、pdfを画像に変換します.
記事を参照しましたhttp://javasogo.iteye.com/blog/1169234 
これらのオープンソースプロジェクトのPDFRender、pdfbox、jpedalのやり方を比較します.
1.PDFRender:確かに一番効率がいいですが、字体のサポートが足りないとほとんどの中国語のpdfに対応できないです.
2.pdfbox:フォントは基本的に変換できますが、メモリオーバーしやすいです.(何十Mファイルを作ったらだめです.)
3.jpedal:効率がいいです.でも、ここのいくつかの中国語のpdfファイルはサムネイルを生成しています.プロジェクトチームにもバグを提出しました.
仕方がないです.今フォントが解決できない状況に遭遇しました.ICEPDFを探しました.このプロジェクトもビジネスとオープンソースがあります.私はオープンソースのICEPDF-42.2(最新の4.3があります)を使って、jpedalのフォントサポートライブラリを使って、確かに私の手の中国語のpdfを支持することができます.しかも効率がいいです.使用しやすいです.ここにコードをここに貼り付けます.01public  static  final  String FILETYPE_JPG = "jpg";02    public  static  final  String SUFF_IMAGE = "."  + FILETYPE_JPG;03  04/**05     * pdf 06     *@param filepath , d:/test.pdf07     *@param imagepath , d:/test-1.jpg08     *@param zoom     ,1 ,0.3 30%09     */10    public  static  void  tranfer(String filepath, String imagepath, float  zoom)11            throws  PDFException, PDFSecurityException, IOException {12        // ICEpdf document class13        Document document = null;14  15        float  rotation = 0f;16  17        document = new  Document();18        document.setFile(filepath);19        // maxPages = document.getPageTree().getNumberOfPages();20  21        BufferedImage img = (BufferedImage) document.getPageImage(0,22                GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation,23                zoom);24  25        Iterator iter = ImageIO.getImageWritersBySuffix(FILETYPE_JPG);26        ImageWriter writer = (ImageWriter) iter.next();27        File outFile = new  File(imagepath);28        FileOutputStream out = new  FileOutputStream(outFile);29        ImageOutputStream outImage = ImageIO.createImageOutputStream(out);30        writer.setOutput(outImage);31        writer.write(new  IIOImage(img, null, null));32    }