-
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
...