Google Code Prettify

2012年9月20日 星期四

JMuPdf PDF to Image

MuPdf 實在有夠強大的,解析檔案出現字型問題,還是能夠正常輸出畫面

JMuPdf JNI library http://code.google.com/p/jmupdf/

轉jpg範例


PdfDocument pdfDoc = new PdfDocument(pdf_file);
int count = pdfDoc.getPageCount();
int zoom = 1;

for(int i=0;i < count ;i++){
     PageRenderer render = new PageRenderer(pdfDoc.getPage((i+1)), zoom, Page.PAGE_ROTATE_AUTO, ImageType.IMAGE_TYPE_RGB);
     render.setAntiAliasLevel(8);//需設為8,不然中文字會變醜
     render.render(true);

     JPGOptions options = new JPGOptions();
     options.setQuality(96);

     FileOutputStream out = new FileOutputStream(new File(out_dir+(i+1)+".jpg"));
     JimiWriter writer = Jimi.createJimiWriter("image/jpeg", out);
     writer.setSource(render.getImage().getSource());
     writer.setOptions(options);
     writer.putImage(out);
    
     out.flush();out.close();
    
     render.dispose();
}

pdfDoc.dispose();

解決canvas在行動裝置上模糊的問題

在高解析度的行動裝置上畫圖,一直會有模糊的問題

可以參考 http://www.html5rocks.com/en/tutorials/canvas/hidpi/

javascript 如下:


var devicePixelRatio = window.devicePixelRatio || 1,
var backingStoreRatio = context.webkitBackingStorePixelRatio ||
                            context.mozBackingStorePixelRatio ||
                            context.msBackingStorePixelRatio ||
                            context.oBackingStorePixelRatio ||
                            context.backingStorePixelRatio || 1,

var ratio = devicePixelRatio / backingStoreRatio;
if (devicePixelRatio !== backingStoreRatio) {

        var oldWidth = canvas.width;
        var oldHeight = canvas.height;

        canvas.width = oldWidth * ratio;
        canvas.height = oldHeight * ratio;

        canvas.style.width = oldWidth + 'px';
        canvas.style.height = oldHeight + 'px';
}