在golang中从html创建pdf

新手上路,请多包涵

如何从 Google Go 中的 HTML 输入创建 PDF 文件?如果还不可能,是否有任何旨在解决此问题的举措?

我在 php 中寻找像 TCPDF 这样的解决方案。

原文由 mimrock 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

安装

go get -u github.com/SebastiaanKlippert/go-wkhtmltopdf

go version go1.9.2 linux/amd64

代码

   import (
        "fmt"
        "strings"
        wkhtml "github.com/SebastiaanKlippert/go-wkhtmltopdf"
    )

      func main(){
                 pdfg, err :=  wkhtml.NewPDFGenerator()
               if err != nil{
                  return
              }
              htmlStr := `<html><body><h1 style="color:red;">This is an html
 from pdf to test color<h1><img src="http://api.qrserver.com/v1/create-qr-
code/?data=HelloWorld" alt="img" height="42" width="42"></img></body></html>`

              pdfg.AddPage(wkhtml.NewPageReader(strings.NewReader(htmlStr)))


              // Create PDF document in internal buffer
              err = pdfg.Create()
              if err != nil {
                  log.Fatal(err)
              }

               //Your Pdf Name
               err = pdfg.WriteFile("./Your_pdfname.pdf")
              if err != nil {
                  log.Fatal(err)
              }

              fmt.Println("Done")
        }

上面的代码适用于在具有适当背景图像和嵌入式 Css 样式标签的 golang 中将 html 转换为 pdf

检查回购协议

请参阅拉取请求文档改进

建议(来自 https://wkhtmltopdf.org/status.html ):

不要将 wkhtmltopdf 与任何不受信任的 HTML 一起使用——一定要清理任何用户提供的 HTML/JS,否则它可能会导致运行它的服务器被完全接管!请考虑使用 AppArmor 或 SELinux 等强制访问控制系统,请参阅推荐的 AppArmor 策略。

如果您使用它来生成报告(即使用您控制的 HTML),也可以考虑使用 WeasyPrint 或商业工具 Prince——请注意,我不隶属于这两个项目,请尽您的努力。

如果您使用它来转换使用动态 JS 的网站,请考虑使用 puppeteer 或它拥有的众多包装器之一。

原文由 muthukumar selvaraj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏