【问题标题】:laravel dompdf get base64 formatlaravel dompdf获取base64格式
【发布时间】:2022-12-10 14:06:24
【问题描述】:

我在一个项目中使用 laravel-dompdf (Barryvdh\DomPDF) 并且需要获取 base64 格式的文件(vor 一个 vue 组件)

在 laravel 控制器中:

$data = array(
  'values' => $documentValues
);

$pdf = PDF::loadView('documentTemplate', $data);

我可以使用以下方式下载文件:

$pdf->download('test.pdf');

但我需要来自服务器的响应,其中包含 base64 格式的源文件,如下所示:

source: 'data:application/pdf;base64,<BASE64_ENCODED_PDF>'

我试过这样的事情:

base64_encode($pdf->stream())

但不工作。

有任何想法吗?

更新

我解决了:

return 'data:application/pdf;base64,'.base64_encode($pdf->stream());

【问题讨论】:

  • “但不工作” - 这是什么意思?如果您可以共享更多代码,其他人可以检查为什么这不起作用
  • @NicoHaase 我修复了....它只返回了没有数据编码的 base64:应用程序.... :-)
  • 您应该提交解决方案作为答案,而不是将其添加到您的问题中。

标签: php laravel vue.js dompdf


【解决方案1】:

服务器端:

echo base64_encode($dompdf->output());

客户端:

htmlstr['html'] = "<p>abcd</p>";
await axios.post(endpoint, transformToFormData(htmlstr), config, { responseType: 'blob' })

    .then(response => {
        if(response.status===200 && response.data != null ){
          console.log("response-data", response);
          const data = response.data;
          downloadPDF(data,fileName);
        
          
        }
      })
function downloadPDF(pdf,fileName) {
    const linkSource = `data:application/pdf;base64,${pdf}`;
    const downloadLink = document.createElement("a");
    downloadLink.href = linkSource;
    downloadLink.download = fileName;
    downloadLink.click();
  }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
相关资源
最近更新 更多