Gopdf

简介

  • pdf生成
  • 参考
    • 官方文档:https://github.com/signintech/gopdf
    • 导入模版:https://qiita.com/tao_s/items/be145dc85169689a2a4f

示例

func main() {
	pdf := gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) //595.28, 841.89 = A4
	pdf.AddPage()

	// テンプレートファイルをインポート
	tpl := pdf.ImportPage("template1.pdf", 1, "/MediaBox") // 1はページ
	// Draw pdf onto page
	pdf.UseImportedTemplate(tpl, 0, 0, 595.28, 841.89) // テンプレート構造体, x座標, y座標, 横幅, 高さ

	err := pdf.AddTTFFont("regular", "Go-Regular.ttf")
	if err != nil {
		panic(err)
	}

	err = pdf.SetFont("regular", "", 20)
	if err != nil {
		panic(err)
	}

	pdf.SetXY(50, 50)
	pdf.Cell(nil, "good good good")
	pdf.WritePdf("example.pdf")
}

before after

备注

  1. 下载font
git clone https://go.googlesource.com/image
ls image/font/gofont/ttfs 
  1. 导入模版报错
  • panic: Failed to initialize parser: Failed to read pdf: Failed to read xref table: Unsupported /DecodeParms - only tested with /Columns <= 4 and /Predictor <= 12
  • 解决:使用pdftx对pdf进行转换
pdftk template.pdf cat output template1.pdf 
  1. 下载pdftx
brew install pdftk-java