开发景区网站如何通过Go语言html生成PDF?

网友投稿 349 2022-09-30

开发景区网站如何通过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,这种也是最简单的方法。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中BigDecimal,DateFormatter 和迭代器的"陷阱"
下一篇:EasyGBS中Redis不启动的问题排查及优化
相关文章

 发表评论

暂时没有评论,来抢沙发吧~