TSINGSEE青犀视频开发景区网站如何通过Go语言html生成PDF?
Posted TSINGSEE
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TSINGSEE青犀视频开发景区网站如何通过Go语言html生成PDF?相关的知识,希望对你有一定的参考价值。
之前我们在某景区开发了一个行人监测系统,系统上线后经过我们不断的调整和优化,一直保持了稳定的运行,现在该景区需要制作一个网站,网站里可以查看一天中的每个时间点统计的人数,并生成PDF,供下载查看。由于在服务端我们使用的是Go语言制作,所以这里我们用的一个go-wkhtmltopdf来实现该功能。
生成第一个PDF可以是想要的格式(没有问题):
第二次生成PDF就会出现下图错误的情况:
在查看控制台应用出现如下错误提示:
生成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、在主函数初始化实例。
2、使用exe命令直接转换PDF,这种也是最简单的方法。
以上是关于TSINGSEE青犀视频开发景区网站如何通过Go语言html生成PDF?的主要内容,如果未能解决你的问题,请参考以下文章
TSINGSEE青犀视频开发景区AI行人识别调用动态行人识别失败问题排查及解决
TSINGSEE青犀视频景区行人检测功能如何实现休息日的分析