Как распечатать компоненты div с помощью плагинов Cordova Printer

Пожалуйста, мне нужна помощь в идентификации, поскольку я не могу печатать с помощью подключаемых модулей принтера Cordova с этим кодом.

printReport () {
      var newstr = document.getElementById('analysis').innerHTML
      var div = document.createElement('div')
      div.className = 'listPrint'
      div.innerHTML = this.getIngredientList()
      const prtHtml = '<h4>ShoopiShopping List</h4>'
      let styleHtml = ''
      for (const node of [...document.querySelectorAll('link[rel="stylesheet"], style')]) {
        styleHtml += node.outerHTML
      }
      const winPrint = window.open('')
      winPrint.document.write(`<!DOCTYPE html>
        <html>
        <head>
        <title>ShopIt</title>
        ${styleHtml}
        </head>
        <body>
        ${prtHtml}`
      )
      winPrint.document.body.append(div)
      winPrint.document.write(`${newstr}`)
      winPrint.document.write(`</body>
        </html>`)
      cordova.plugins.printer.print(winPrint)
    }

Я намерен распечатать две разные части страницы. Один раздел печатается как есть с помощью innerHTML, а список элементов из второго раздела используется для формирования таблицы с помощью this.getIngredientList().

При запуске печати приложение создает документ с необходимой информацией для точной печати, но диалоговое окно принтера не отображается.

Пожалуйста, что я делаю не так?

ОБНОВЛЕНИЕ

я изменился на

winPrint.cardova.plugins.printer.print()
winPrint.close()

И он отображает диалоговое окно печати и печатает. Однако winPrint.close() не выполняется. сгенерированная страница с помощью winPrint= window.open() остается открытой, и мне приходится принудительно закрыть приложение.


person Ebena107    schedule 06.03.2020    source источник


Ответы (1)


хотя я не понял, почему window.close() отказался вызываться/выполняться, это то, что я в конце концов делаю,


    const winPrint = (`<!DOCTYPE html>
            <html>
            <head>
            <title>ShopIt</title>
            ${styleHtml}
            </head>
            <body>
            ${prtHtml}`
          )

     cordova.plugins.printer.print(winPrint, { name: 'report' })

Я надеюсь, что это помогает кому-то.

person Ebena107    schedule 13.03.2020