Как распечатать компоненты div с помощью плагинов Cordova Printer - PullRequest
1 голос
/ 06 марта 2020

Пожалуйста, мне нужна помощь с определением, пока я не могу печатать с помощью плагинов 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)
    }

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

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

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

ОБНОВЛЕНИЕ

Я изменил на

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

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

1 Ответ

0 голосов
/ 13 марта 2020

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


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

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

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

...