ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TSINGSEE青犀视频开发景区网站如何通过Go语言html生成PDF?

2021-12-30 18:00:43  阅读:140  来源: 互联网

标签:return converter err nil TSINGSEE html 青犀 pdf PDF


之前我们在某景区开发了一个行人监测系统,系统上线后经过我们不断的调整和优化,一直保持了稳定的运行,现在该景区需要制作一个网站,网站里可以查看一天中的每个时间点统计的人数,并生成PDF,供下载查看。由于在服务端我们使用的是Go语言制作,所以这里我们用的一个go-wkhtmltopdf来实现该功能。

生成第一个PDF可以是想要的格式(没有问题):

image.png

第二次生成PDF就会出现下图错误的情况:

image.png

在查看控制台应用出现如下错误提示:

image.png

生成PDF的代码:

func WritePDFFile(htmlPath, pdfPath string) error {
   if err := pdf.Init(); err != nil {
      return err
   }
   pdf.Destroy()

   // Create object from URL.
   object2, err := pdf.NewObject(htmlPath)
   if err != nil {
      return err
   }

   // Create converter.
   converter, err := pdf.NewConverter()
   if err != nil {
      return err
   }
   defer converter.Destroy()

   // Add created objects to the converter.
   converter.Add(object2)

   // Set converter options.
   converter.Title = "人数统计"
   converter.PaperSize = pdf.A4
   converter.Orientation = pdf.Portrait
   converter.MarginTop = "1cm"
   converter.MarginBottom = "1cm"
   converter.MarginLeft = "10mm"
   converter.MarginRight = "10mm"

   // Convert objects and save the output PDF document.
   outFile, err := os.Create(pdfPath)
   if err != nil {
      return err
   }
   defer outFile.Close()

   if err := converter.Run(outFile); err != nil {
      return err
   }
   return nil
}

上面的代码是在该函数初始化PDF实例,并将该函数销毁。调用下载PDF接口时,第一次调用没有错误,但是第二次调用会出现不在主线程中的问题,所以需要将PDF初始化实例先实例化在主线程中,即可解决。

解决办法有二个可以生成PDF:

1、在主函数初始化实例。

image.png

2、使用exe命令直接转换PDF,这种也是最简单的方法。

image.png

标签:return,converter,err,nil,TSINGSEE,html,青犀,pdf,PDF
来源: https://blog.csdn.net/TsingSee/article/details/122242544

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有