Как сгенерировать PDF из html языка Go?

Go Архитектура
Как сгенерировать PDF из html языка Go?

Ранее мы разработали систему мониторинга пешеходов в живописном месте, после запуска системы продолжили ее настройку и оптимизацию, и она стабильно работает, теперь нужно создать сайт для живописного места, а сайт можно проверить статистику каждой временной точки дня. , и создать 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, что также является самым простым способом.