Как распечатать текстовые данные в PDF по GOPDF? - PullRequest
0 голосов
/ 14 мая 2019

То, что я пробовал:

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 Ответ

1 голос
/ 14 мая 2019

Не пропускайте обработку ошибок, поэтому вы не видите причину ошибки.

Пожалуйста, добавьте проверку ошибок в функции SetFont, Text, WritePdf. В моем случае я обнаружил, что ошибка исходит от 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...