Golang 使用go-wkhtmltopdf
套件將HTML轉PDF。
範例環境:
- Go 1.19
- go-wkhtmltopdf v1.9.1
事前要求
參考「使用 wkhtmltopdf 將HTML轉成PDF」安裝wkhtmltopdf。因為go-wkhtmltopdf
實際上是利用wkhtmltopdf來實現HTML轉PDF。
使用
將要轉換的HTML文件,這邊為invoice_tw.html
放在專案根目錄。
在專案根目錄,命令列輸入go get -u github.com/SebastiaanKlippert/go-wkhtmltopdf
安裝go-wkhtmltopdf
。
呼叫wkhtmltopdf.NewPDFGenerator
建立wkhtmltopdf.PDFGenerator
物件。
呼叫wkhtmltopdf.NewPageReader
並傳入html文件的bytes.Reader
建立wkhtmltopdf.PageReader
物件。
呼叫wkhtmltopdf.PDFGenerator.AddPage
並傳入html的wkhtmltopdf.PageReader
加入頁面。
呼叫wkhtmltopdf.PDFGenerator.Dpi.Set
設定DPI解析度。
呼叫wkhtmltopdf.PDFGenerator.Create
建立PDF並暫存在記憶體中。
呼叫wkhtmltopdf.PDFGenerator.WriteFile
將暫存在記憶體中PDF資料寫出為PDF檔案。
main.go
package main
import (
"bytes"
"io/ioutil"
"log"
"github.com/SebastiaanKlippert/go-wkhtmltopdf"
)
func main() {
pdfg, err := wkhtmltopdf.NewPDFGenerator() // create pdf generator
if err != nil {
panic(err)
}
htmlfile, err := ioutil.ReadFile("./invoice_tw.html") // read html file
if err != nil {
log.Fatal(err)
}
pdfg.AddPage(wkhtmltopdf.NewPageReader(bytes.NewReader(htmlfile)))
pdfg.Dpi.Set(600)
err = pdfg.Create() // create pdf in memory
if err != nil {
panic(err)
}
err = pdfg.WriteFile("./invoice_tw.pdf") // create pdf file
if err != nil {
panic(err)
}
}
測試
執行程式後,在專案根目錄會多了轉換的PDF檔,invoice_tw.pdf
。
沒有留言:
張貼留言