4、製作一個html轉pdf的spring boot starter

Lune_solitair發表於2020-11-01

記錄每一個努力的日子!
上一篇:maven多module打包
參考專案:github 1.2.0分支 tool模組

1、依賴軟體

wkhtmltopdf

2、關鍵程式碼

使用ProcessBuilder來執行可執行指令碼

public Html2pdf(String command){
   this.command = command;
}

public final void conver(String htmlPath, String pdfPath) throws Throwable {
    ProcessBuilder pb = new ProcessBuilder(Stream.of(command, htmlPath, pdfPath).collect(Collectors.toList()));
    pb.redirectErrorStream(true);
    Process p = null;
    BufferedReader br = null;
    try {
        p = pb.start();
        br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = null;
        while ((line = br.readLine()) != null) {}
        p.waitFor();
    } finally {
        if (br != null) {
            br.close();
        }
        if (p != null) {
            p.destroy();
        }
    }
}

3、步驟

3.1

新建module,編寫html2pdf的程式碼

3.2

新建一個starter的module,引入上一個module,把上一個module的主執行類申明為一個Bean

@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = "html2pdf", name = "enable", havingValue = "true")
public Html2pdf html2pdf(Html2pdfProperties html2pdfProperties) {
    return new Html2pdf(html2pdfProperties.getCommand());
}

在strter的resources下新建META-INF/spring.factories,新增starter中定義的Configuration

org.springframework.boot.autoconfigure.EnableAutoConfiguration=net.dog.html2pdfspringbootstarter.Html2pdfAutoConfiguration

3.3

在專案中直接引入starter,即可注入bean使用

相關文章