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共享数据用Mutex 或 Channel

在go 里,多线程对共享数据的操作一般要使用Mutex 或 Channel 来加锁或隔离通信。下面是一个使用Mutex 和 Channel 比较的例子。...

Golang quicktemplate 模版快速入门

Golang 有很多的模版引擎,自带的 `html/template` 也很好,大多数情况都能满足需求,只是有些逻辑、条件判断不好在模版里实现, `quicktemplate` 是个很好的选择。...

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

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.22.3 Processed in 0ms