Обновить

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

Именно его и использую под капотом в онлайн-сервисе. В расширении используется Devtools Protocol.

А что не так со встроенными средствами браузера конвертации страниц в PDF?

Ради теста решил запустить скачку вашей же статьи с вашего сайта и стандартными средствами браузера.

Итог: С вашего сайта в PDF не конвертируется часть картинок.

Стандартные возможности браузера в том же виде как у вас сохраняют вёрстку, но при этом загружают все картинки.

А что не так со встроенными средствами браузера конвертации страниц в PDF?

Нельзя сохранить страницу без разрывов, внешний вид будет сильно отличаться от исходной страницы. До недавних пор текст нельзя было выделять, сейчас завезли OCR, но ссылки всё равно остаются не кликабельными.

С вашего сайта в PDF не конвертируется часть картинок.

Только что попробовал сделать то же самое - действительно, в некоторых случаях картинки не прогружаются. Это как раз то, о чём я писал. Я так и не нашёл нормального способа прогружать все картинки.

Если у кого есть идеи как прогрузить все lazy-loading картинки, буду рад если поделитесь в комментариях.

Может быть пройтись по всему DOM и принудительно эмулировать клик, или что то подобное для такого рода картинок?

Клик может триггернуть непредсказуемое поведение.

Сейчас я прохожусь в DOM по всем картинкам: прокручиваю страницу к каждой картинке, жду ~100мс и перехожу к следующей картинке.

Я не крут во фронтэнде, потому и вопрос может глупый, для lazy-loading используется какой то типизированный подход типа аттрибутов или за счет js кода?

Есть атрибут loading="lazy", но он используется не всегда. Иногда хитро реализуют с помощью JS. Поэтому, я игнорирую эти атрибуты и прохожусь по всем img, чтобы наверняка.

Понимаю! Ну, тогда я пас. Я как то в таком случае затрудняюсь даже предположить что можно делать. Разве что влазить внутрь таких элементов и искать есть ли у них подписаные события, которые должны срабатывать на появление элемента в поле видимости пользователя, и тогда на них делать либо дополнительную задержку, либо принудительно вызывать такие события.

этот длинный pdf еще надо в чем то прочесть. под windows есть удачный просмотрщик - без проблем. Под linux, android просмотр длинного pdf вызывает как минимум тормоза, а то и вообще не отражается.

экспорт аддоном SingleFile в html дает куда как более смотрибельный результат

этот длинный pdf еще надо в чем то прочесть.

Для просмотра PDF не нашёл ничего быстрее, чем встроенный просмотрщик Chrome, даже на очень длинных и тяжелых PDF (>200 мб) он работает вполне сносно.

экспорт аддоном SingleFile в html дает куда как более смотрибельный результат

SingleFile - это оно? Интересное расширение, я посмотрю как у него внутри сделана прогрузка картинок, может подчерпну что для себя. Спасибо!

Кстати, для подобных целей есть CTRL+S и там можно выбрать не html, а mhtml и то же самое будет - одностраничная копия html страницы. Попробуйте, когда не нужен PDF, это довольно удобно.

 можно выбрать не html, а mhtml 

уж я наигрался в сохранение .mht в opera а потом внезапно их стало нечем открыть кроме внезапно мелгомякого браузера. сохранки SingleFile  пока что открываю скажем на телефоне без вопросов, картинки в себя он интегрирует как data:image/png;base64

Но тут тоже прикол: на opera этот аддон похоже прикрыли не помню как и зачем в opera добавлял, наверное из chrome магазина. есть ссылка https://www.getsinglefile.com/ из cli конечно интересно но в браузере можно добавить ublock с большим набором косметических фильтров

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации