Константин
🙏 Спасибо )
Alhimik
Брат ты просто гений
Я просто иногда заглядываю в документацию. 😂
Alhimik
И тебе советую: https://pptr.dev/.
Константин
Я просто иногда заглядываю в документацию. 😂
Ну да ее для начала нужно прочитать )
Константин
И тебе советую: https://pptr.dev/.
Можно , с тобой посоветоваться еще мне нужно для диплома сделать . Что бы на сайте чел загрузил файл и нажал печатать и что бы на сервере отправился файл на распечатку . Что нужно изучить ?
Константин
Ну человек заходит на сайт мой , загружает word документ и оплачивает распечатку и мой принтер печатает . А сервер сделать на моем компе с подключенным принтером и все сделать на node js.
Константин
Что значит "на сервере отправился файл на распечатку"?
Типа такая автоматизация , принтера . Ни надо человеку деньги платить и все такое .
Alhimik
Ну человек заходит на сайт мой , загружает word документ и оплачивает распечатку и мой принтер печатает . А сервер сделать на моем компе с подключенным принтером и все сделать на node js.
Ну для этого pptr точно не нужен. Найти либу какую-то для работы с печатью, сервер на express поднять и т.п. В чат по Node.js с вопросами, если не разберёшься. Навернякак кто-то уже делал что-то подобное.
Константин
Да я видел библиотеку уже готовую. Изучу по подробней . А тут автоматизировать решил всю теорию просто выгрузить с хекслета то подписка заканчивается )
Константин
кого:?
Alhimik
Вынеси goBack из массива промисов.
Alhimik
Тебе нужно сделать клик и дождаться завершения навигации. Потом взять контент или что ты там хочешь сделать. И потом уже вызывать goBack.
Константин
Да понял
Константин
заработало
Константин
а pdf сохранение в промессе делать да ?
Константин
Пойду изучу что такое промис )
Константин
Почему то браузер как на мобильном хоть поставил разрешение 1920 на 1080 почему так ?
Константин
Не знаю. А ты использовал page.emulate()?
это настройки pdf надо было поправить
Константин
Не знаю. А ты использовал page.emulate()?
А есть ли такая настройка что бы высота экрана сама ставилась , что бы в pdf все вошло то входит только первый экран и не скролится вниз
Константин
https://pptr.dev/#?product=Puppeteer&show=api-pagepdfoptions
Константин
тут такого вроде нет
Константин
Я высоту просто поставил 4000 но было бы кайф если бы он сам ставил автоматом какая нужна
Константин
Константин
вот так сделал
Andrey
а как он может узнать, какая высота нужна, когда есть JS и CSS, адаптирующийся под размеры
Константин
просто все файлы гигантские блин получатся
Alhimik
Ты же вроде печатать хотел.
Константин
Константин
что бы пустот не было таких
Alhimik
Я с этим не работал. Не знаю. Посмотри что там за пустой блок. Может его можно без последствий удалить.
Константин
не он стоит потому что я высоту pdf файла поставил высокую
Константин
т.к другие страницы с теорию большие
Константин
а какие то маленькие
Alhimik
А зачем тебе их увеличивать? Какая итоговая цель?
Константин
А если печатать ставишь у них блочится и только одна страница
Andrey
не пробовал с флагом preferCSSPageSize играться?
Andrey
не для того ли он сделан
Andrey
в функции .pdf()
Alhimik
А если печатать ставишь у них блочится и только одна страница
Понял кажется. Скорей всего у внутреннего блока стоит overflow: scroll и какой-то фиксированный размер. Поэтому получился внутренний скролл. Тебе нужно покопаться в CSS и попробовать убрать размер блока, и тогда весь контент должен все страницы занять как и должен.
Alhimik
У тебя сейчас 1 длинная страница, а когда уберёшь ограничение, он должен отображать корректное количество страниц.
Константин
Вы не поняли походу , вся проблема в высоте если ее не ставить вот что будет
Alhimik
Вы не поняли походу , вся проблема в высоте если ее не ставить вот что будет
Это понятно. Я к тому что нужно стили привести в норму, чтобы было корректное отображение контента. Если я возьму среднестатистический сайт и попробую отправить на печать, там весь контент корректно отображается на несколько страниц. Получается что на твоём сайте какие-то стили мешают корректному отображению.
Константин
а ну точно понял
Константин
а как вывести все стили ?
Константин
Константин
Вот эта тема наверное да ?
Константин
Только как их удалить
Константин
перед самой печатью
Константин
Константин
плюс он внешний
Alhimik
Вот эта тема наверное да ?
Тут с ходу не подскажу, нужно сначала разобраться что именно влияет. Обычно media print добавляют как раз для того чтобы скорректировать страницу (скрыть ненужное, отформатировать оставшееся и т.д.) для печати. Попробуй сравнить с другими сайтами, где страницы нормально отображаются на печати.
Константин
да это оно сто процентов , как это стиль деблокировать
Alhimik
да это оно сто процентов , как это стиль деблокировать
Самый простой способ это включить перехват запросов и заблокировать этот стиль.
Константин
а может после загрузки страницы заблочить все последующие стили.
Alhimik
Экспериментируй.
Константин
Ладно и с высотой норм выглядит все .
Константин
а как несколько node js включит сразу 20 потоков ?
Andrey
если парсить, то удобно https://www.npmjs.com/package/puppeteer-cluster
🦋noteee
При выпадении ошибки, функция крашнится. Но закроется ли браузер или он останется открытым и будет нагружать ресурсы?
Slava
приветствую завсегдатаев. у меня проблемы и мне нужен совет. как правильно ("результативно") селектить элементы, находящиеся внутри iframe? я туповатый в программировании, и на этот раз знания английского меня не спасли. я реально не шарю в этом, но очень интересно. скажем, внутри страницы есть iframe#id, и внутри этого фрейма, допустим, div.classname. как провести выборку? мечтаю получить ответ в формате до "await page.click('selector');". заранее спасибо.
🦋noteee
const frames = await page.frames(); // Массив с фреймами Далее перебираешь массив в поисках нужного фрейма и делаешь обращение уже к нему. Например: const frames = await page.frames(); const my_frame = frames.find(x => /регулярка/.test(x.url())) // Поиск нужного фрэйма по URL if (!my_frame) {// фрейм не найден} my_frame.click(select) // клик по селектору внутри фрейма
🦋noteee
Фремы могут подгружаться не сразу все, а постепенно или при определенных действиях. Тебе ещё предстоит выяснить и это
Alhimik
При выпадении ошибки, функция крашнится. Но закроется ли браузер или он останется открытым и будет нагружать ресурсы?
Браузер останется работать. Нужно оборачивать код в try/catch и в finaly закрывать его.
🦋noteee
Браузер останется работать. Нужно оборачивать код в try/catch и в finaly закрывать его.
Если я оберну в try/catch то, переменная browse будет недоступна, не знаю почему, константы так работают, вне зоны действия что ли
🦋noteee
Если я оберну в try/catch то, переменная browse будет недоступна, не знаю почему, константы так работают, вне зоны действия что ли
26 строчка. По синтаксису видно, что это не константа. В работе выпадет в ошибку, что переменная недоступна
Andrey
let browser = null выше try то напиши, а ниже конст у него убери
Andrey
обьяви просто в скопе выше
🦋noteee
let browser = null выше try то напиши, а ниже конст у него убери
В таком случаи оно будет глобальным (внутри текущей функции). Но все таки мне не хотелось бы так делать, потому что не нравится просто синтаксис. Есть какие то ещё варианты?
Alhimik
Если я оберну в try/catch то, переменная browse будет недоступна, не знаю почему, константы так работают, вне зоны действия что ли
Это называется блочная область видимости. И это нормально. Делай как выше написали.
🦋noteee
В таком случаи оно будет глобальным (внутри текущей функции). Но все таки мне не хотелось бы так делать, потому что не нравится просто синтаксис. Есть какие то ещё варианты?
Меня эта проблема с зоной видимости уже тревожит около года. Всегда выносил переменную вне зоны try, чтобы в catch она была видна. Но что то уже надоело. В поисках более лучших вариантов
🦋noteee
Нет, других вариантов нет. Нет иных способов ловить исключения.
Понял, это то, что я хотел услышать. Спасибо