GolangNote

Golang笔记

Golang 使用 wkhtmltopdf 把HTML转为PDF文件

Permalink

把 HTML 内容转为 PDF 文件,这里用到一个 Golang 库 go-wkhtmltopdf,它是对 wkhtmltopdf 的 Golang 命令行封装,可以方便的调用。

wkhtmltopdf 是开源(LGPLv3)命令行工具,可使用 Qt WebKit 渲染引擎将 HTML 渲染为 PDF格式。 它是以“无头(headless)”方式运行,不需要浏览器或其它显示服务。

wkhtmltopdf 命令行使用

Bash: wkhtmltopdf
1
wkhtmltopdf http://google.com google.pdf

go-wkhtmltopdf 库使用

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://golangnote.com/topic/277.html 转摘请注明来源

Related articles

Golang 单实例实现网站多域名请求

有时候写网站,为了统一的后端,把不同业务都集中到一个后端,这时就需要处理多域名的请求,在 Go http server 里实现很简单,只需把不同域名映射到不同的 `http.Handler`。...

Golang phantomjs 动态代理实现

phantomjs 是个很优秀的软件,虽然现在被chrome headless 抢了风头,但在某些特定场合,使用phantomjs 还是很方便,这里是介绍使用Go 实现动态代理。...

Golang实现简单的Socks5代理

Socks5 代理较 `http/https` 代理有较好的性能,下面是借鉴某个著名开源软件的 local 实现的简单代理。...

Write a Comment to "Golang 使用 wkhtmltopdf 把HTML转为PDF文件"

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.18 Processed in 1ms