Django_plotly_dash: ошибка экспорта в pdf с помощью html2pdf.js

Я пытаюсь экспортировать приборную панель django_plotly_dash в pdf и не могу этого сделать. Я застрял на следующей ошибке в консоли при нажатии на кнопку для запуска экспорта:

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

который говорит мне, что html2pdf не может быть найден. Я пробовал импортировать в папку assets, а также 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')
)

Не знаю, что еще делать, любая помощь будет очень приветствоваться!

Проблема возникает из-за компонента html.Script, который работает не так, как можно было бы ожидать: короче говоря, тег <script> создается, но никогда не выполняется.

Это часть более крупной проблемы: Несколько компонентов имеют ограниченную или нулевую функциональность в текущих браузерах :

[...] браузеры не выполняют <script>, вставленные так, как это делает react (через 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)
Вернуться на верх