#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-на-принтер. выглядит неплохо.