【发布时间】:2019-03-11 10:45:59
【问题描述】:
好的,我是使用 Echo 框架的 Go Lang,尝试构建 pdf,它将从数据库源加载数据 - 稍后会出现。
这就是我渲染 pdf html 布局的方式,
func (c *Controller) DataTest(ec echo.Context) error {
return ec.Render(http.StatusOK, "pdf.html", map[string]interface{}{
"name": "TEST",
"msg": "Hello, XXXX!",
})
}
上述函数工作正常,并呈现 html(我为函数构建了一个临时路径)。现在我想使用该函数作为我的 html 模板来构建我的 pdf。
所以我使用wkhtmltopdf 和库"github.com/SebastiaanKlippert/go-wkhtmltopdf"
这就是我在 pdf 中呈现 html 的方式,
html, err := ioutil.ReadFile("./assets/pdf.html")
if err != nil {
return err
}
但我需要能够更新模板,这就是我尝试渲染页面并将其放入 pdf 的原因。
但是,Echo 框架返回一个错误类型,而不是字节或字符串类型,我不确定如何更新它,以便我渲染的内容作为字节返回?
谢谢,
更新
page := wkhtmltopdf.NewPageReader(bytes.NewReader(c.DataTest(data)))
这就是我目前正在做的事情,数据只是一个 html 字符串,然后将其转换为NewReader 的字节片。
这很好用,但我想将 DataTest 函数转换为 Echo 完全呈现的 html 页面。这样做的问题是,当您返回呈现的页面时,它会作为错误类型返回。
所以我试图找出更新它的原因,所以我可以将数据作为 html 字符串返回,然后将其作为字节切片放入。
【问题讨论】:
-
请附上您的错误信息,因为很难理解您想说什么。错误消息通常非常简单。如果它出错是因为它需要字符串但获取字节,那么您所要做的就是将其转换为字符串,如
string(yourbytes) -
请为您的问题添加更多示例,
ioutil.ReadFile不会在 pdf 中呈现 html... -
我觉得解决方法很简单。但是缺少一些重要信息。如果您在服务器上渲染它,您可以通过使用
page := NewPage("https://url/to/your/page/?rid=12342")从服务器调用渲染的html 来使用pdf API,或者为什么这不可能?你如何处理模板?显示你在哪里解析和执行它。为什么要读文件?那是模板还是渲染的html? -
@apxp 那是我能做的。我试图在不将其添加到路由器的情况下使用该功能。
-
没有错误,因为它的类型错误。我已经用更多信息更新了我的问题