我创建了一个服务来生成pdf文件go-wkhtmltopdf这是功能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>我应该用该结果的缓冲区向客户端做出响应吗?要不然是啥?
1 回答
不负相思意
TA贡献1777条经验 获得超10个赞
只需将缓冲区发送到客户端并使用此函数下载文件(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();
};
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消
