Как распечатать в PDF с помощью Node JS / Webdriver.io / Chimp? - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь использовать Chimp / Webdriver.io / Selenium в Node JS, чтобы проверить мой @media print CSS, чтобы убедиться, что все отображается правильно, когда люди печатают с моего сайта.

Как можно программно заставить Chrome / Firefox печатать в PDF? Я не хочу конвертировать скриншот в PDF. Я хочу, чтобы PDF выглядел так, как он будет выглядеть при печати. ​​

Тогда, как я могу отсканировать PDF, чтобы убедиться, что результаты верны?

1 Ответ

0 голосов
/ 04 мая 2018

Успех! Мне пришлось установить / использовать следующие инструменты:

npm install html-pdf-chrome --save-dev
npm install pdfreader --save-dev

html-pdf-chrome используется для магического вызова Chrome для преобразования некоторого заданного HTML в PDF способом, который Chrome обычно использует для печати. pdfreader - это пакет, который читает указанный PDF, а затем предоставляет текст внутри него.

После перехода на страницу, которую я хочу распечатать с помощью веб-драйвера, я могу позвонить:

this.When(/^I print the page to a PDF named "([^"]*)"$/,
  async function(outputFilename) {

    console.log("Getting the html...");
    let sourceHTML = await browser.getSource();

    console.log("Printing the html using Chrome...");
    let pdf = await HtmlPdf.create(sourceHTML);

    console.log("Saving the PDF to " + outputFilename + "...");
    await pdf.toFile(path.join(DEFAULT_PRINT_PATH, outputFilename));
  });

Затем, чтобы получить текст в PDF, я вызываю эту функцию:

function readPdfText(filename) {
  return new Promise((resolve, reject) => {
    let pdfText = "";
    new pdfReader.PdfReader().parseFileItems(path.join(DEFAULT_PRINT_PATH, filename), function(err, item){
      if (err){
        console.log("Error received on parsing PDF: " + err, err.stack);
        reject(err);
      }
      else if (!item) {
        resolve(pdfText);
      }
      else if (item.text) {
        if(item.text.trim() === ":") {
          pdfText += item.text;
        } else {
          pdfText += "\n" + item.text;
        }
      }
    });
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...