1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package util
- import (
- "context"
- "encoding/base64"
- "fmt"
- "github.com/gogf/gf/v2/errors/gerror"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/os/gfile"
- "time"
- )
- func SavePdfFile(ctx context.Context, num, pdfBase64 string) (filePath string, err error) {
- var (
- rootDir = g.Cfg().MustGet(ctx, "pdfFilePathRootDir", "/out").String()
- pathPrefix = g.Cfg().MustGet(ctx, "pdfFilePathPrefix", "/invoice").String()
- webDoMain = g.Cfg().MustGet(ctx, "pdfFilePathDomain", "https://www.jianyu360.com").String()
- now = time.Now()
- requestPath = fmt.Sprintf("/%s/%s/%s_%d.pdf", pathPrefix, now.Format("2006-01-02"), num, now.Unix())
- fileFullPath = fmt.Sprintf("%s%s", rootDir, requestPath)
- )
- data, err := base64.StdEncoding.DecodeString(pdfBase64)
- if err != nil {
- return "", gerror.Wrap(err, "解析文件base64编码失败")
- }
- pdfFile, err := gfile.Create(fileFullPath)
- if err != nil {
- return "", gerror.Wrap(err, "创建pdf文件异常")
- }
- if _, err = pdfFile.Write(data); err != nil {
- return "", gerror.Wrap(err, "pdf文件写入异常")
- }
- return fmt.Sprintf("%s%s", webDoMain, requestPath), nil
- }
- func GetPdfBase64(filePath string) (base64Str string, err error) {
- fileBytes := gfile.GetBytes(filePath)
- if len(fileBytes) == 0 {
- return "", gerror.New("文件内容为空")
- }
- return base64.StdEncoding.EncodeToString(fileBytes), nil
- }
|