django_绘图_破折号:使用html2pdf.js导出到pdf时出错

sd2nnvve  于 2023-02-05  发布在  Go
关注(0)|答案(1)|浏览(187)

我正在尝试导出django_plotly_dash Jmeter 板到pdf,但无法得到它。当我点击按钮触发导出时,控制台中出现以下错误:

ReferenceError: html2pdf is not defined
    at Object.nClicksToPDF [as n_clicks]

这是告诉我,html 2 pdf无法找到。我已经尝试导入资产文件夹以及cdn直接在应用程序布局,但似乎没有做的伎俩,我的东西尝试:
下面是我如何将其导入应用程序:

html.Script(src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"),

下面是我的回调,它被称为:

app.clientside_callback(
    """
function nClicksToPDF(n_clicks){
  if(n_clicks > 0){
    document.querySelector('.chkremove').style.display = 'none';
    const opt = {
      margin: 2,
      filename: 'myfile.pdf',
      image: { type: 'jpeg', quality: 0.98 },
      html2canvas: { scale: 1},
      jsPDF: { unit: 'cm', format: 'a2', orientation: 'p' },
      pagebreak: { mode: ['avoid-all'] }
    };
    console.log('ok')

    html2pdf().from(document.getElementById("print")).set(opt).save();
    setTimeout(function(){
      document.querySelector('.chkremove').style.display = 'block';
    }, 2000);
  }
}
    """,
    Output('js','n_clicks'),
    Input('js','n_clicks')
)

不知道还能做什么,任何帮助都是非常受欢迎的!

pbossiut

pbossiut1#

问题来自html.Script组件,该组件的工作方式与预期不同:简而言之,创建了<script>标签,但从未执行该标签。
这是一个更大问题的一部分:Several components have limited or no functionality in current browsers
[...]浏览器不会像react那样执行<script>(通过innerHTML)。在文档中包含html.Script只会让人们走进死胡同。要么它应该使用不同的插入机制,要么它应该在文档中有一个醒目的警告,要么它应该被完全删除。
另一种方法是将html2pdf添加为外部脚本,即:

scripts = [{
  'src': 'https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js'
}]

app = DjangoDash(__name__, external_scripts=scripts)

相关问题