Дизайн и Верстка > Всё о Html
Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Gleb:
Столкнулся с проблемой: при определении @media print и описании стиля для печати не получил желаемого результата - возникла необходимость печати страницы на листе с альбомной ориентировкой.
При этом надобы чтобы она задавалась сразу, а не пользователем.
Возможностей представляется две:
1) Как-нибудь (не знаю как) добиться того, чтоб при печати по дефолту уже был нажат чекбокс "landscape" : очевидно значения нажато/ненажато = true/false для чекбокса хранятся в какой-то переменной у браузера (в какой?). Если идти по этому пути надо переназначить скриптом значения этих переменных.
2) Развернуть на 90град (против часовой) контент страницы - но как тогда производить постраничную (т.е. полистовую) разбивку?
Подскажите пожалста как добиться желаемого результата и избежать возможных осложнений.
Maniac:
Знаешь, насколько я знаю, ты не можешь получать доступ к менюшкам браузера (и слава богу). Все, что ты можешь сделать - это вызвать окно печати. ВСЁ.
Теперь о твоей проблеме. ИМХО, есть смысл дать юзеру возможность скачать "версию для печати" в PDF. Результат будет максимально близок к желаемому
Gleb:
Согласен, что в ОБЩЕМ СЛУЧАЕ этот вариант наиболее предпочтителен. Однако взаимодействие посетителя (целевой посетитель - инженер-конструктор, руководитель пром. предприятия; отсюда - необходимость печати) с контентом ожидается таковым, что посетителю скорее будут интересны отдельные разделы и скорее даже страницы (вразноброс) поэтому делать .pdf со всем контентом не выгодно (большой и целиком от начала до конца никому не нужен) делать же .pdf на каждую станицу тоже муторно (не те объемы для работы (оплаченной фиксировано :( )).
Поэтому оптимальное решение - действовать через CSS2, (весь сайт уже разработан и написан, только без оптимизации печати). То что я сделал сейчас под книжную ориентировку вполне даже приемлемо, и вроде значащий контент не теряется, однако удобнее это все делать на альбомной ориентировке.
В этом и трабл.
Xander:
Gleb
Вот вам ссылка на описание раздела CSS2, отвечающего за страничный вывод: http://www.w3.org/TR/REC-CSS2/page.html.
--- Цитировать ---
13.2.2 Page size: the \'size\' property
\'size\'
Value: {1,2} | auto | portrait | landscape | inherit
Initial: auto
Applies to: the page context
Inherited: N/A
Percentages: N/A
Media: visual, paged
--- Конец цитаты ---
В стандарте все это описано, а чтобы выяснять, как это работает в реальных браузерах, у меня не хватает времени, желания и бумаги.
А о результатах ваших экспериментов вы в эту же тему напишите потом, хорошо?
На самом-то деле любопытно.
Gleb:
Решение проблемы "влоб" (работа только спинным мозгом, копчиковым отделом - то как я это сделал сразу):
на контент-пейджах:
1)
2)
3)ShowHead(ПАРАМЕТР);
4)ShowHead(ПАРАМЕТР);
5)
PAGE CONTENT
В файле стиля:
а) описание для экрана
б) отключаем для экрана то что нужно только для принтера (см 4):
.print {
display: none;
}
в) определим тип устройства - С ПОСТРАНИЧНОЙ РАЗБИВКОЙ (ПРИНТЕР) и даём описание станицы для него:
@media print {
BODY, td, a, .listhead, .listitem { font-family: "Times New Roman", Times, serif; }
г) скрипты для экрана отключаем для принтера (см п. 2 и 3):
.script {display: none;}
д) выводим скрипты для принтера с нужным нам форматированием:
.print {display: inline;
font-family: Verdana, Arial, Helvetica, sans-serif;}
е) все содержимое страницы сдвигаем для принтера так, чтоб "ушла" левая менюшка и как раз страница по ширене листа получается .all {position: absolute; left: -195px;}
}
Все работает нормально.
если заменяем в стиле пункты в-е на
@media print {
BODY, td, a, .listhead, .listitem { font-family: "Times New Roman", Times, serif; }
.script {display: none;}
.print {display: inline;
font-family: Verdana, Arial, Helvetica, sans-serif;}
page: {size: landscape}
}
а это именно то, что написано в родной спецификации CSS2, последняя строка не воспринимается!
Как говорится
ЗДЕСЬ ВАМ НЕ ТУТ
Навигация
Перейти к полной версии