如何通过gopdf将文本数据打印为pdf?

时间:2019-05-14 06:49:47

标签: pdf go

我尝试过的事情:

var data string
data = "Line1 <br>\n" +
       "Line2 \n" +
       "Line3 \n" +
       "Line4" // It's got from DB which saved by br data.

pdf.SetFont("wts11", "", 14)
pdf.SetX(100)
pdf.SetY(200)
pdf.Text(data)

结果:

pdf显示:

enter image description here

所有其他打印数据都消失了。

也许它无法解析<br>

即使将pdf.Text(data)更改为pdf.Cell(nil, text),结果也相同。

参考:

  

https://github.com/signintech/gopdf

类似的问题:

https://github.com/signintech/gopdf/issues/78

1 个答案:

答案 0 :(得分:1)

不要跳过错误处理,这就是为什么看不到失败原因的原因。

请向SetFontTextWritePdf函数添加错误检查。就我而言,我发现错误来自SetFont,因为未找到它。

如果您的工作目录中有open-sans.ttf,则此代码会很好地工作:

package main

import (
    "log"

    "github.com/signintech/gopdf"
)

func main() {
    pdf := gopdf.GoPdf{}
    pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})
    pdf.AddPage()

    if err := pdf.AddTTFFont("open-sans", "open-sans.ttf"); err != nil {
        log.Print(err.Error())
        return
    }

    if err := pdf.SetFont("open-sans", "", 14); err != nil {
        log.Print(err.Error())
        return
    }

    pdf.SetX(100)
    pdf.SetY(200)

    data := "Line1 <br/>\n" +
        "Line2 \n" +
        "Line3 \n" +
        "Line4"

    if err := pdf.Text(data); err != nil {
        log.Print(err.Error())
        return
    }

    if err := pdf.WritePdf("hello.pdf"); err != nil {
        log.Print(err.Error())
        return
    }
}