как дождаться, пока кукольник завершит функцию «печать на принтер»?

#puppeteer

Вопрос:

Я запускаю puppeteer в kiosk-printing режиме для автоматизации печати PDF на принтере. Но я должен использовать waitForTimeout , чтобы дать принтеру достаточно времени, чтобы, я думаю, получить инструкции по печати. В противном browser.close( ) случае кукловод слишком быстро выключается, и ничего не печатается.

Как дождаться завершения функции печати? Я не уверен, каким waitForTimeout должно быть произвольное значение.

 const puppeteer = require('puppeteer');

(async () =>
{
  const browser = await puppeteer.launch(
    {
      headless: false, 
      "args": [ "--kiosk-printing" ]
    });

  const page = await browser.newPage();
  await page.goto(`file:///C:/Users/srich/Downloads/packing-list.pdf`);

  await page.evaluate(() => { window.print(); });
  await page.waitForTimeout(2000) ;

  await browser.close( ) ;
})();
 

Я попытался зайти на goto веб — страницу после запуска window.print . Затем дождитесь завершения этой навигации. Но отключение puppeteer все равно произошло слишком быстро, и PDF-файл не был напечатан.

   await page.evaluate(() => { window.print(); });
  await page.goto(`https://google.com`);
  await page.waitForSelector('input'); 
  await browser.close( ) ;
 

Комментарии:

1. проблема --kiosk-printing в том, что ее нельзя ждать внутри page.evaluate . метод оценки ожидает только обещания window.print немедленных шагов узла к следующему шагу. является ли puppeteer обязательным в вашем случае использования, или он нужен вам только для открытия PDF-файлов? спрашиваю, потому что есть более легкие пакеты узлов для печати pdf.

2. Я открыт для любого решения. Пакет узлов идеален. Я могу автоматизировать печать с помощью adobe acrobat из командной строки. Но это оставляет приложение adobe открытым. И мне рассказывали о Нитро. Одно из моих опасений заключается в том, что я не смогу контролировать настройки принтера. В Windows есть параметр «масштаб: подходит для области печати», который хорошо работает. При печати с помощью puppeteer я получаю только настройки по умолчанию.

3. использование пакета узлов pdf-на-принтер. выглядит неплохо.