Уже много лет, с переменным успехом, борюсь с косяками печати веб-страниц из браузеров. Поскольку я не люблю печатать на бумагу, и почти всегда вывожу в PDF, то всегда полагал, что проблемы возникают именно при преобразовании HTML в PDF. Действительно, где-то лучше работает Save to PDF, где-то — печать на виртуальный PDF-принтер. Косяки при печати на бумагу возникали в основном на навороченных сайтах, поэтому списывал их на кривизну рук веб-программистов. А сегодня попробовал печатать и в PDF, и на принтеры, и везде получается совсем не то, что браузер отображает в окне.
Я в упор не понимаю, как такое может получаться технически. Не знаю, как в линуксах, но в винде операция "печать на принтер" отличается от операции "рендеринг в окне" только выбором целевого устройства.
Знаю, что на рендеринг могут влиять стили CSS, но есть страницы без @media/print, просто состоящие из нескольких кадров. Их можно печатать покадрово, но ни за что нельзя напечатать просто страницу в том же виде, как она выглядит в окне.
Есть ли браузеры, умеющие рендерить на устройство "принтер" то же самое, что он рендерит в окно?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А конкретнее? Что сложного в том, чтобы рисовать на принтер в точности так же, как он рисует в окно? ЕМ>Если есть сложности с использованием шрифтов, то в крайнем случае можно тупо делать растровое изображение.
Проблема в том что контент динамический, может не влазить на страницу и надо разбивать.
Для этого есть css для печати и если он вменяемый то печатать будет. Если нету то увы, обычно получается фигня.
Но для этого эту часть тоже надо поддерживать, а это дорого не потому что это невозможно, а потому что всё переусложнили.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Уже много лет, с переменным успехом, борюсь с косяками печати веб-страниц из браузеров. Поскольку я не люблю печатать на бумагу, и почти всегда вывожу в PDF, то всегда полагал, что проблемы возникают именно при преобразовании HTML в PDF. Действительно, где-то лучше работает Save to PDF, где-то — печать на виртуальный PDF-принтер. Косяки при печати на бумагу возникали в основном на навороченных сайтах, поэтому списывал их на кривизну рук веб-программистов. А сегодня попробовал печатать и в PDF, и на принтеры, и везде получается совсем не то, что браузер отображает в окне.
ЕМ>Я в упор не понимаю, как такое может получаться технически. Не знаю, как в линуксах, но в винде операция "печать на принтер" отличается от операции "рендеринг в окне" только выбором целевого устройства.
ЕМ>Знаю, что на рендеринг могут влиять стили CSS, но есть страницы без @media/print, просто состоящие из нескольких кадров. Их можно печатать покадрово, но ни за что нельзя напечатать просто страницу в том же виде, как она выглядит в окне.
ЕМ>Есть ли браузеры, умеющие рендерить на устройство "принтер" то же самое, что он рендерит в окно?
А нельзя выложить пару примеров?
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А сегодня попробовал печатать и в PDF, и на принтеры, и везде получается совсем не то, что браузер отображает в окне.
ЕМ>Я в упор не понимаю, как такое может получаться технически.
ЕМ>Знаю, что на рендеринг могут влиять стили CSS, но есть страницы без @media/print, просто состоящие из нескольких кадров. Их можно печатать покадрово, но ни за что нельзя напечатать просто страницу в том же виде, как она выглядит в окне.
ЕМ>Есть ли браузеры, умеющие рендерить на устройство "принтер" то же самое, что он рендерит в окно?
Кроме CSS есть такая штука, как адаптивная вёрстка, которая может быть реализована с использованием CSS и/или ещё и Js-коде.
При изменении экрана, всё это это взаимодействует и можно получать разные компоновки под разные экраны.
При переходе на печать изменяются параметры(формат) окна(страницы) отображения, что приводит к перекомпоновке.
По идее, при печати можно обойтись одной видимой компоновкой и её html представлением,
но при переносе на другое разрешение оно будет неадекватно масштабироваться.
В общем, лучше пусть разработчики сами решают, как их сайт должен выглядеть при печати на разных устройствах.
Re[6]: Можно ли напечатать веб-страницу "как есть"?
Здравствуйте, kov_serg, Вы писали:
_>контент динамический
В каком смысле динамический? Я пытаюсь печатать страницы, на которых ничто не шевелится — все неподвижно.
_>может не влазить на страницу и надо разбивать.
Ну и разбивал бы хоть как-нибудь, лишь бы на бумаге можно было увидеть то же самое, что видно в окне, пусть и с другими интервалами.
Кстати, а современные системы не поддерживают рулонных принтеров? И какое в PDF ограничение на высоту страницы?
_>Но для этого эту часть тоже надо поддерживать, а это дорого не потому что это невозможно, а потому что всё переусложнили.
В чем конкретно может быть сложность тупо разрезать окно поблизости от границы предполагаемой страницы?
Если что, все страницы, которые мне было нужно печатать (на бумагу или в PDF), не содержали больших блоков, перекрывающихся по высоте, и всегда содержали достаточное количество мест, где их можно было бы разделить горизонтально.
Re[2]: Можно ли напечатать веб-страницу "как есть"?
Здравствуйте, Alekzander, Вы писали:
A>нельзя выложить пару примеров?
Навскидку — нельзя, ибо чаще всего это различные заказы (товары, билеты и т.п.). Скажем, в окне бронирования авиабилета вижу номер/дату паспорта, email и номер телефона, а вывожу в PDF — там этой информации нет, печатаю на бумагу — на ней тоже нет. В тех PDF, что присылает оператор, этой информации нет, или она неполная — там все вообще в другом формате
Регулярно сталкивался с такой хренью на сайтах, где есть разные таблицы, но сейчас не вспомню, где именно.
Здравствуйте, Евгений Музыченко, Вы писали:
A>>нельзя выложить пару примеров?
ЕМ>Навскидку — нельзя, ибо чаще всего это различные заказы (товары, билеты и т.п.). Скажем, в окне бронирования авиабилета вижу номер/дату паспорта, email и номер телефона, а вывожу в PDF — там этой информации нет, печатаю на бумагу — на ней тоже нет. В тех PDF, что присылает оператор, этой информации нет, или она неполная — там все вообще в другом формате
ЕМ>Регулярно сталкивался с такой хренью на сайтах, где есть разные таблицы, но сейчас не вспомню, где именно.
Тогда PrtSc / три пальца вниз.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Здравствуйте, bnk, Вы писали:
bnk>можно просто скриншот сделать и его распечатать
Можно, от безысходности. Но и там проблема, если страница не влезает в окно. А сделать окно произвольного размера браузер не умеет — даже в режиме имитации экранов разного размера максимальная высота ограничена несколькими тысячами точек.
Re[3]: Можно ли напечатать веб-страницу "как есть"?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Можно, от безысходности. Но и там проблема, если страница не влезает в окно. А сделать окно произвольного размера браузер не умеет — даже в режиме имитации экранов разного размера максимальная высота ограничена несколькими тысячами точек.
Попсовые скриншотилки (picpick, snagit) умеют окно проскроллить, и сделать большой скиншот. Ну как вариант.
Re[3]: Можно ли напечатать веб-страницу "как есть"?
Здравствуйте, Евгений Музыченко, Вы писали:
A>>нельзя выложить пару примеров?
ЕМ>Навскидку — нельзя, ибо чаще всего это различные заказы (товары, билеты и т.п.). Скажем, в окне бронирования авиабилета вижу номер/дату паспорта, email и номер телефона, а вывожу в PDF — там этой информации нет, печатаю на бумагу — на ней тоже нет. В тех PDF, что присылает оператор, этой информации нет, или она неполная — там все вообще в другом формате
Тоже бесит.
В Firefox есть дополнение, позволяющее редактировать страницу и видеть результат перед печатью или сохранением в файл. можно убрать всякие лишние банеры с навигационными элементами.
ЕМ>Регулярно сталкивался с такой хренью на сайтах, где есть разные таблицы, но сейчас не вспомню, где именно.
В Firefox есть встроенная скриншотилка as is.
Вы можете создавать снимки экрана для захвата видимых частей веб-страниц или даже полных веб-страниц, а также копирования или сохранения этих изображений.