把 HTML 内容转为 PDF 文件,这里用到一个 Golang 库 go-wkhtmltopdf
,它是对 wkhtmltopdf
的 Golang 命令行封装,可以方便的调用。
wkhtmltopdf 是开源(LGPLv3)命令行工具,可使用 Qt WebKit 渲染引擎将 HTML 渲染为 PDF格式。 它是以“无头(headless)”方式运行,不需要浏览器或其它显示服务。
wkhtmltopdf 命令行使用
1
wkhtmltopdf http://google.com google.pdf
go-wkhtmltopdf 库使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Create new PDF generator
pdfg, err := NewPDFGenerator()
if err != nil {
log.Fatal(err)
}
// Set global options
pdfg.Dpi.Set(300)
pdfg.Orientation.Set(OrientationLandscape)
pdfg.Grayscale.Set(true)
// Create a new input page from an URL
page := NewPage("https://godoc.org/github.com/SebastiaanKlippert/go-wkhtmltopdf")
// Set options for this page
page.FooterRight.Set("[page]")
page.FooterFontSize.Set(10)
page.Zoom.Set(0.95)
// Add to document
pdfg.AddPage(page)
// Create PDF document in internal buffer
err = pdfg.Create()
if err != nil {
log.Fatal(err)
}
// Write buffer contents to file on disk
err = pdfg.WriteFile("./simplesample.pdf")
if err != nil {
log.Fatal(err)
}
fmt.Println("Done")
问题
因为 wkhtmltopdf 使用 Qt WebKit 渲染,有些 css 效果不能实现,js 脚本不能实行。
相关资源
- 官网 https://wkhtmltopdf.org/index.html
- 项目源码 https://github.com/wkhtmltopdf/wkhtmltopdf
- go库 https://github.com/SebastiaanKlippert/go-wkhtmltopdf
- wkhtmltopdf 中文乱码解决 https://youbbs.org/t/3295
本文网址: https://golangnote.com/topic/277.html 转摘请注明来源