go内嵌静态资源包-https://github.com/go-bindata/go-bindata

go get -u github.com/go-bindata/go-bindata/...
go-bindata -o templates/myfile.go -pkg templates font/  # 命令行模式下,此命令将font目录下的所有资源嵌入到templates/myfile.go文件中,myfile.go是自定义的文件名,就可看到生成了templates/myfile.go文件;-pkg templates是指定myfile.go的package名

在这里插入图片描述

/*
 * @Description:
 * @Author:
 * @Date: 2020-10-03 13:10:16
 */
package main

import (
	"fmt"

	"test/templates"
)

// 根据上面命令通过命令行参数把font目录下的文件嵌入到go文件后的获取和还原操作
func main() {
	data, err := templates.Asset("font/hh.txt") // 获取font/hh.txt文件的内容
	if err != nil {
		// Asset was not found.
		fmt.Println(err, "assetErr")
		return
	}
	fmt.Print(string(data))

	// 把font/hh.txt还原到hy目录下
	if err := templates.RestoreAssets("hy", "font/hh.txt"); err != nil {
		fmt.Println(err, "还原文件失败")
		return
	}
}

/*
 * @Description:
 * @Author:
 * @Date: 2020-10-03 13:10:16
 */
package main

import (
	"fmt"
	"regexp"
	"test/templates"

	"github.com/go-bindata/go-bindata"
	"github.com/signintech/gopdf"
)

func main() {
	// packFile() // 打包静态资源嵌入到go文件,这个函数执行一次就行
	// data, err := templates.Asset("txt/NotoSansSC-Regular.ttf") // 获取font/hh.txt文件的内容
	// if err != nil {
	// 	// Asset was not found.
	// 	fmt.Println(err, "assetErr")
	// 	return
	// }

	if err := templates.RestoreAssets("font", "NotoSansSC-Regular.ttf"); err != nil {
		fmt.Println(err, "还原文件失败")
		return
	}

	pdf := gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 795.28, H: 300}})
	defer pdf.Close()
	pdf.AddPage()

	err := pdf.AddTTFFont("msyh", "./font/NotoSansSC-Regular.ttf") // 添加字体文件
	if err != nil {
		fmt.Println(err, "addfontErr")
		return
	}

	err = pdf.SetFont("msyh", "", 14)
	if err != nil {
		fmt.Println(err, "setFontErr")
		return
	}
	pdf.SetLineWidth(0.5)     //  设置线宽度
	pdf.SetLineType("normal") // 设置线类型

	pdf.Text("设置字体")
	err = pdf.WritePdf("pdf.pdf")
	if err != nil {
		fmt.Println(err, "WritePdf")
		return
	}
}

// 打包静态资源嵌入到go文件
func packFile() {
	inputName := "txt"
	err := bindata.Translate(&bindata.Config{
		Package: "templates", // 打包后生成的go文件的package名称
		Input: []bindata.InputConfig{
			bindata.InputConfig{
				Path: inputName, // 打包inputName目录里的静态资源到go文件
			},
		},
		Output: "templates/docHtml.go", // 打包后生成的go文件名
		Ignore: []*regexp.Regexp{
			regexp.MustCompile("apis.js$"), // 排除inputName中文件的正则
		},
		Prefix: "txt/",
	})
	if err != nil {
		fmt.Println(err, "paseErr")
		return
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值