Feeds:
文章
留言

Archive for the ‘Groovy’ Category

[Groovy 2.3] Trait 測試

官方文件[2]教學其實蠻清楚的, [1] 的文章則更加容易入門,將範例整理成5個檔案

 TestTraitEx1.groovy – 簡單的使用單一 Trait

TestTraitEx2.groovy – 使用多個 Trait

TestTraitEx3.groovy – 實做 Trait 的 abstract method

TestTraitEx4.groovy – Trait 繼承的 method 解析順序

TestTraitEx5.groovy – 使用多個 Trait,名稱衝突解析順序

 

參考資料

[1] http://www.javacodegeeks.com/2014/04/groovy-2-3-introduces-traits.html

[2] http://beta.groovy-lang.org/docs/groovy-2.3.0-SNAPSHOT/html/documentation/core-traits.html

Read Full Post »

[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 »