我创建了一个使用go-wkhtmltopdf
生成pdf文件的服务
这是功能
func Pdf() func(c *gin.Context) {
return func(c *gin.Context) {
// download wkhtmltopdf and set that wkhtmltopdf on below
wkhtmltopdf.SetPath("/usr/local/bin/wkhtmltopdf")
type ReqHtml struct {
Html string `json:"html"`
}
var html ReqHtml
_ = c.BindJSON(&html)
pdfg, err := wkhtmltopdf.NewPDFGenerator()
if err != nil {
log.Fatal(err)
}
page := wkhtmltopdf.NewPageReader(strings.NewReader(html.Html))
pdfg.Orientation.Set(wkhtmltopdf.OrientationPortrait)
page.FooterRight.Set("[page]")
page.FooterFontSize.Set(10)
pdfg.AddPage(page)
err = pdfg.Create()
if err != nil {
log.Println(err)
}
err = pdfg.WriteFile("./myPdf.pdf")
if err != nil {
log.Fatal(err)
}
}
}
Writefile将文件写入我的根文件夹服务器,如何使客户端下载它?
假设我有
<button> download file </button>
我应该用结果的缓冲给客户端一个响应吗?或者是什么?
最佳答案
只需将缓冲区发送给客户端并使用此功能即可下载文件(React示例代码):
prepareDocForDownload = result => {
const length = Object.entries(result.data).length;
let bytes = new Uint8Array(length);
for (let i=0; i<length; i++) {
bytes[i] = result.data[i];
}
const file = new Blob(
[bytes.buffer],
{type: 'application/pdf'});
const fileURL = URL.createObjectURL(file);
const link = document.createElement('a');
link.href = fileURL;
link.setAttribute('download', 'file.pdf');
document.body.appendChild(link);
link.click();
};
关于javascript - 如何从pdf文件生成器中下载文件到Go和React中的本地客户端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60185128/