Feeds:
文章
留言

Archive for 四月 15th, 2014

[Groovy] PDF to JPG

TTR PDF To JPG 是一套簡單但好用的工具,可將含中文的PDF正確的轉換成圖(JPG,BMP,TIF,PNG,GIF),  而且提供 GUI, 其底層是透過 jMuPDF 這套優異的 PDF Library, jMuPDF 又是以 JNI 封裝 MuPDF C Library, 效能相當不錯。

如果你想要一個命令列腳本 (個人偏好),其實可用 Groovy 來寫一個簡易腳本達成 TTR PDF to JPG 的轉檔效果

測試環境

Groovy 2.2.1

Windows XP

目錄結構

– jmupdf32.dll

– jmupdf64.dll

– jmupdf.jar

– pdf2jpg.groovy ; 主程式

 

// pdf2jpg.groovy

ZOOM, ROTATION, IMAGE_FORMAT 可依需要自行修改

/**
 * PDF to JPG
 *
 * @author Chui-Wen Chiu
 * @date 2014-04-15
 */
import com.jmupdf.enums.ImageType;
import com.jmupdf.page.Page;
import com.jmupdf.page.PageRenderer;
import com.jmupdf.pdf.PdfDocument;
import javax.imageio.ImageIO;

def static main(args){
    def fn = args[0].toLowerCase()   
    def file = new File(fn)
    if(!file.exists()){
        println("file not found")
        return
    }
    
    def pdfDoc = new PdfDocument(fn)
    if (pdfDoc.getHandle() < 0) {
        println("open pdf fail")
        return
    }
    def IMAGE_FORMAT = "JPG" // PNG, GIF, BMP,
    def folder = file.getParent()
    def org_fname = file.getName()
    def total = pdfDoc.getPageCount()
    def pagr, fname
    def ZOOM = 1.0F // 1~10
    def ROTATION = 0 // 0~360        
    for(pg = 1; pg<=total; pg+=1){
        printf("\r%d/%d", pg, total)
        page = pdfDoc.getPage(pg)
        pagr = new PageRenderer(page, ZOOM, ROTATION, ImageType.IMAGE_TYPE_RGB)
        pagr.setAntiAliasLevel(10)
        pagr.setGamma(1.0F)
        pagr.render(true)   
        
        fname = new File(folder + "\\" + org_fname.replace(".pdf", sprintf("-%04d.jpg", pg)))        
        ImageIO.write(pagr.getImage(), IMAGE_FORMAT, fname)
        
    }
    printf("\nFinish\n")
}

 

使用範例

groovy -cp ./jmupdf.jar pdf2jpg.groovy test.pdf

 

完整程式下載

 

 

Read Full Post »