我创建了一个使用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/

10-09 15:18
查看更多