亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 pdf 文件生成器將文件下載到 Go 和 React 中的本地客戶端

如何從 pdf 文件生成器將文件下載到 Go 和 React 中的本地客戶端

Go
大話西游666 2022-05-18 09:51:07
我創建了一個服務來生成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();

  };


查看完整回答
反對 回復 2022-05-18
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號