pdf.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package util
  2. import (
  3. "context"
  4. "encoding/base64"
  5. "fmt"
  6. "github.com/gogf/gf/v2/errors/gerror"
  7. "github.com/gogf/gf/v2/frame/g"
  8. "github.com/gogf/gf/v2/os/gfile"
  9. "time"
  10. )
  11. func SavePdfFile(ctx context.Context, num, pdfBase64 string) (filePath string, err error) {
  12. var (
  13. rootDir = g.Cfg().MustGet(ctx, "pdfFilePathRootDir", "/out").String()
  14. pathPrefix = g.Cfg().MustGet(ctx, "pdfFilePathPrefix", "/invoice").String()
  15. webDoMain = g.Cfg().MustGet(ctx, "pdfFilePathDomain", "https://www.jianyu360.com").String()
  16. now = time.Now()
  17. requestPath = fmt.Sprintf("/%s/%s/%s.pdf", pathPrefix, now.Format("2006-01-02"), num)
  18. fileFullPath = fmt.Sprintf("%s%s", rootDir, requestPath)
  19. )
  20. data, err := base64.StdEncoding.DecodeString(pdfBase64)
  21. if err != nil {
  22. return "", gerror.Wrap(err, "解析文件base64编码失败")
  23. }
  24. pdfFile, err := gfile.Create(fileFullPath)
  25. if err != nil {
  26. return "", gerror.Wrap(err, "创建pdf文件异常")
  27. }
  28. if _, err = pdfFile.Write(data); err != nil {
  29. return "", gerror.Wrap(err, "pdf文件写入异常")
  30. }
  31. return fmt.Sprintf("%s%s", webDoMain, requestPath), nil
  32. }