You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用html2pdf导出HTML报表至PDF时图片缺失问题求助

问题:html2pdf导出PDF时logo图片缺失

我在Web应用中使用html2pdf工具将HTML报表导出为PDF文件,导出后其他数据显示正常,但报表中的logo图片缺失,请问有什么解决办法?

视图代码

<div class="row" align="center" id="divToExport">
  <table style="width:100%" class="table-responsive">
    <tbody>
      <tr>
        <td colspan="2" align="center" class="auto-style1"></td>
      </tr>
      <tr align="right">
        <td colspan="2" align="RIGHT">
          <span id="DatetimeLBL" style="color:Black;font-size:12px;font-weight:normal;">@DateTime.Now</span>
        </td>
      </tr>
      <tr align="center">
        <td colspan="2" align="center">
          <img src="https://i.imgur.com/mPF8.png" width="150" align="center">
        </td>
      </tr>
      <tr align="center">
        <td colspan="2">
          <br>
        </td>
      </tr>
      <tr align="right">
        <td class="auto-style2"> Data di Nascita: &nbsp; </td>
        <td align="left" class="auto-style2">
          <span id="DOBLBL2" style="color:Black;">@Model.First().Date_Of_Birth_Fixed</span>
        </td>
      </tr>
      <tr align="right">
        <td> Nazionalità: &nbsp; </td>
        <td align="left">
          <span id="NationalityLBL2" style="color:Black;">@Model.First().Birth_Country</span>
        </td>
      </tr>
    </tbody>
  </table>
</div>

JavaScript代码

function downloadItalyDoc() {
    var element = document.getElementById('divToExport');
    var opt = {
        margin: 0.1,
        filename: 'File.pdf',
        image: { type: 'jpeg', quality: 2 },
        html2canvas: { scale: 3, logging: true },
        jsPDF: { unit: 'in', format: 'a4', orientation: 'portrait' }
    };
    // 原代码缺少导出执行语句,需补充
    html2pdf().set(opt).from(element).save();
}

解决办法

  • 检查图片链接有效性:先确认https://i.imgur.com/mPF8.png能正常打开,若链接失效,更换为可用的图片地址。
  • 处理跨域问题:html2canvas默认无法处理跨域图片,需在配置中添加跨域支持:
    修改html2canvas配置项,添加useCORS: true和allowTaint: true:
    html2canvas: { scale: 3, logging: true, useCORS: true, allowTaint: true }
    
  • 确保图片加载完成再导出:如果图片加载较慢,导出时可能还未渲染完成,可通过预加载图片解决:
    function downloadItalyDoc() {
        var img = document.querySelector('#divToExport img');
        // 等待图片加载完成
        img.onload = function() {
            var element = document.getElementById('divToExport');
            var opt = {
                margin: 0.1,
                filename: 'File.pdf',
                image: { type: 'jpeg', quality: 0.95 }, // quality有效值为0-1,原2值不符合要求
                html2canvas: { scale: 3, logging: true, useCORS: true, allowTaint: true },
                jsPDF: { unit: 'in', format: 'a4', orientation: 'portrait' }
            };
            html2pdf().set(opt).from(element).save();
        };
        // 若图片已加载完成,直接触发导出
        if (img.complete) img.onload();
    }
    
  • 修正图片质量配置:原配置中image.quality: 2超出有效值范围(0-1),改为0.95这类合理值,避免图片处理失败。
  • 改用本地图片:将logo图片放到自身服务器,使用相对路径(如/images/logo.png),彻底规避跨域问题。

内容的提问来源于stack exchange,提问作者Dev Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:40:35