-
GoLand IDE创建go项目
这里项目名称为 toPDF -
添加main.go文件,添加main函数,
例子来自: https://github.com/adrg/go-wkhtmltopdf
package main
import (
"fmt"
"github.com/adrg/go-wkhtmltopdf"
"log"
)
func main(){
pdf.Init()
defer pdf.Destroy()
// Create object from url
object1, err := pdf.NewObject("https://www.baidu.com/")
if err != nil {
log.Fatal(err)
}
object1.SetOption("footer.right", "[page]")
// Create converter
converter := pdf.NewConverter()
defer converter.Destroy()
// Add created objects to the converter
converter.AddObject(object1)
// Add converter options
converter.SetOption("documentTitle", "Sample document")
converter.SetOption("margin.left", "10mm")
converter.SetOption("margin.right", "10mm")
converter.SetOption("margin.top", "10mm")
converter.SetOption("margin.bottom", "10mm")
// Convert the objects and get the output PDF document
output, err := converter.Convert()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(output))
}
- GoLand terminal 执行 go run main.go
GoLand会自动提示下载github.com/adrg/go-wkhtmltopdf
也可以手动在terminal中输入: go get github.com/adrg/go-wkhtmltopdf来下载
下载下来之后,运行go run main.go
报:找不到gcc编译器
-
下载安装MinGW
下载安装mingw-w64-install.exe
添加到path环境变量:C:\javaware\mingw\mingw64\bin -
下载wkhtmltopdf
go-wkhtmltopdf项目又依赖于wkhtmltopdf,
terminal中输入: go get github.com/wkhtmltopdf/wkhtmltopdf进行下载
再次执行:go run main.go
结果报错:fatal error: wkhtmltox/pdf.h: No such file or directory
报错原因,看了一下,应该是如下的include引起的:
package pdf
/*
#cgo LDFLAGS: -lwkhtmltox
#include <stdio.h>
#include <stdlib.h>
#include <wkhtmltox/pdf.h>
*/
import "C"
import (
"errors"
"unsafe"
)
type Converter struct {
converter *C.wkhtmltopdf_converter
settings *C.wkhtmltopdf_global_settings
objects []*Object
}
...
- wkhtmltox
又牵扯到了wkhtmltox,继续下载github.com/tcort/wkhtmltox
尝试go get github.com/tcort/wkhtmltox
结果报:go: warning: “github.com/tcort/wkhtmltox/…” matched no packages
手动下载binary:https://wkhtmltopdf.org/downloads.html
这里我下载了wkhtmltox-0.12.5-1.mxe-cross-win64.7z,里面包含:
./bin
libwkhtmltox.a
wkhtmltox.dll
wkhtmltoimage.exe
wkhtmltopdf.exe
./include/wkhtmltox
dllbegin.inc
dllend.inc
image.h
pdf.h
然后
把include里面的wkhtmltox目录复制到MinGW64的安装目录:
C:\javaware\mingw\mingw64\x86_64-w64-mingw32\include
把bin里面的 libwkhtmltox.a, wkhtmltox.dll拷贝到:
C:\javaware\mingw\mingw64\x86_64-w64-mingw32\lib
把bin里面的wkhtmltoimage.exe,wkhtmltopdf.exe拷贝到:
C:\javaware\mingw\mingw64\x86_64-w64-mingw32\bin
再次执行:go run main.go
这次终于运行成功了:
/CreationDate (D:20181025170310+08'00')
>>
endobj
3 0 obj
<<
/Type /ExtGState
/SA true
/SM 0.02
/ca 1.0
/CA 1.0
...
本文介绍了如何在Go项目中使用go-wkhtmltopdf库将HTML转换为PDF。首先在GoLand IDE中创建名为toPDF的项目,接着通过GoLand或终端下载并安装必要的依赖,包括go-wkhtmltopdf、MinGW、wkhtmltopdf及其头文件。遇到的问题包括缺少gcc编译器、wkhtmltopdf相关头文件缺失等,通过手动下载和配置解决了这些问题,最终成功运行go run main.go,实现了HTML到PDF的转换。
912

被折叠的 条评论
为什么被折叠?



