go-wkhtmltopdfを使用してhtmlをpdfに変換

2975 ワード

  • 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-w 64-install.exe path環境変数への追加:C:javawaremingwmingw 64bin
  • ダウンロード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 
    #include 
    #include 
    */
    import "C"
    
    import (
    	"errors"
    	"unsafe"
    )
    
    type Converter struct {
    	converter *C.wkhtmltopdf_converter
    	settings  *C.wkhtmltopdf_global_settings
    
    	objects []*Object
    }
    ...
    
  • wkhtmltoxはまたwkhtmltoxに関わってgithubをダウンロードし続けた.com/tport/wkhtmltox go get githubを試します.com/tport/wkhtmltox結果報:go:warning:“github.com/tport/wkhtmltox/...”matched no packages手動ダウンロードbinary:https://wkhtmltopdf.org/downloads.htmlここでwkhtmltox-0.12をダウンロードしました.5-1.mxe-cross-win64.7 z、中には:./bin libwkhtmltox.a wkhtmltox.dll wkhtmltoimage.exe wkhtmltopdf.exe ./include/wkhtmltox dllbegin.inc dllend.inc image.h pdf.hそれからincludeの中のwkhtmltoxディレクトリをMinGW 64のインストールディレクトリにコピーします:C:javawaremingwmingw 64x 86_64-w 64-mingw 32include binの中のlibwkhtmltox.a, wkhtmltox.dllコピー先:C:javawaremingwmingw 64x 86_64-w 64-mingw 32lib binの中のwkhtmltoimage.exe,wkhtmltopdf.exeコピー先:C:javawaremingwmingw 64x 86_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
    ...