go语言 doc转换html,go语言使用wkhtmltopdf工具将html转成pdf
最近收到網(wǎng)友的提問(wèn)后端怎么把html轉(zhuǎn)成pdf文件,于是我就把我以前做的例子發(fā)出來(lái)給大家參考一下,如果對(duì)你有幫助的話請(qǐng)點(diǎn)個(gè)贊
1.首先選擇適合自己的系統(tǒng)下載wkhtmltopdf工具
mac下載后安裝成功會(huì)自動(dòng)添加到環(huán)境變量 直接執(zhí)行 wkhtmltopdf -V 測(cè)試是否安裝成功
hfy@566-Mac-mini ~ % wkhtmltopdf -V
wkhtmltopdf 0.12.5 (with patched qt)
linux環(huán)境安裝需要下載好,添加執(zhí)行權(quán)限并手動(dòng)加到環(huán)境變量下面,如果不想加入到環(huán)境變量在代碼里寫(xiě)死路徑也行
2.直接使用下面demo修改下就可以使用了
package main
import (
"context"
"errors"
"fmt"
"io/ioutil"
"os/exec"
"path/filepath"
)
var (
argsError = errors.New("no input file or out path")
fileTypeError = errors.New("the file must be in pdf format")
)
type HtmlToPdf struct {
Commond string
in string
out string
argsMap map[string]string
prams []string
}
func NewPdf() *HtmlToPdf {
args := map[string]string{
"--load-error-handling": "ignore",
"--footer-center": "第[page]頁(yè)/共[topage]頁(yè)",
"--footer-font-size": "8",
"-B": "31",
"-T": "32",
}
return &HtmlToPdf{
Commond: "wkhtmltopdf",
argsMap: args,
}
}
func (this *HtmlToPdf) OutFile(input string, outPath string) (string, error) {
var pdfPath string
// 輸入 輸出 參數(shù)不能為空
if input == "" || outPath == "" {
return pdfPath, argsError
}
//判斷是否是生成pdf 文件
ext := filepath.Ext(outPath)
if ext != ".pdf" {
return pdfPath, fileTypeError
}
this.in = input
this.out = outPath
//構(gòu)建參數(shù)
this.buildPrams()
//執(zhí)行命令
if _, err := this.doExce();err != nil {
return pdfPath, err
}
return pdfPath, nil
}
func (this *HtmlToPdf) doExce() ([]byte, error) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
cmd := exec.CommandContext(ctx, this.Commond, this.prams...)
stdout, err := cmd.StderrPipe()
if err != nil {
return nil, err
}
defer stdout.Close()
//運(yùn)行命令
err = cmd.Start()
if err != nil {
return nil, err
}
bytes, err := ioutil.ReadAll(stdout)
if err != nil {
return nil, err
}
cmd.Wait()
return bytes, err
}
func (this *HtmlToPdf) buildPrams() {
for key, val := range this.argsMap {
this.prams = append(this.prams, key, val)
}
//添加 輸入 輸出 參數(shù)
this.prams = append(this.prams, this.in, this.out)
}
func main() {
pdfOpt:= NewPdf()
htmlDemoPath := "xxxxx/src/demo/test.html"
PdfDemoPath := "xxxxx/src/demo/test.pdf"
str,err := pdfOpt.OutFile(htmlDemoPath,PdfDemoPath)
if err != nil {
fmt.Println("Error ",err)
return
}
fmt.Println(str)
}
效果:
image.png
總結(jié)
以上是生活随笔為你收集整理的go语言 doc转换html,go语言使用wkhtmltopdf工具将html转成pdf的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 家里中央空调漏水烂墙责任找谁?
- 下一篇: unity 纹理压缩格式‘_纹理优化:让