Forum Webscript.Ru

Дизайн и Верстка => Всё о Html => Тема начата: Gleb от 20 Января 2003, 12:30:21

Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Gleb от 20 Января 2003, 12:30:21
Столкнулся с проблемой: при определении @media print и описании стиля для печати не получил желаемого результата - возникла необходимость печати страницы на листе с альбомной ориентировкой.
При этом надобы чтобы она задавалась сразу, а не пользователем.
Возможностей представляется две:
1) Как-нибудь (не знаю как) добиться того, чтоб при печати по дефолту уже был нажат чекбокс "landscape" : очевидно значения нажато/ненажато = true/false для чекбокса хранятся в какой-то переменной у браузера (в какой?). Если идти по этому пути надо переназначить скриптом значения этих переменных.
2) Развернуть на 90град (против часовой) контент страницы - но как тогда производить постраничную (т.е. полистовую) разбивку?
Подскажите пожалста как добиться желаемого результата и избежать возможных осложнений.
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Maniac от 20 Января 2003, 21:39:14
Знаешь, насколько я знаю, ты не можешь получать доступ к менюшкам браузера (и слава богу). Все, что ты можешь сделать - это вызвать окно печати. ВСЁ.

Теперь о твоей проблеме. ИМХО, есть смысл дать юзеру возможность скачать "версию для печати" в PDF. Результат будет максимально близок к желаемому
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Gleb от 23 Января 2003, 11:09:02
Согласен, что в ОБЩЕМ СЛУЧАЕ этот вариант наиболее предпочтителен. Однако взаимодействие посетителя (целевой посетитель - инженер-конструктор, руководитель пром. предприятия; отсюда - необходимость печати) с контентом ожидается таковым, что посетителю скорее будут интересны отдельные разделы и скорее даже страницы (вразноброс) поэтому делать .pdf со всем контентом не выгодно (большой и целиком от начала до конца никому не нужен) делать же .pdf на каждую станицу тоже муторно (не те объемы для работы (оплаченной фиксировано :( )).
Поэтому оптимальное решение - действовать через CSS2, (весь сайт уже разработан и написан, только без оптимизации печати). То что я сделал сейчас под книжную ориентировку вполне даже приемлемо, и вроде значащий контент не теряется, однако удобнее это все делать на альбомной ориентировке.
В этом и трабл.
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Xander от 23 Января 2003, 12:39:53
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

В стандарте все это описано, а чтобы выяснять, как это работает в реальных браузерах, у меня не хватает времени, желания и бумаги.

А о результатах ваших экспериментов вы в эту же тему напишите потом, хорошо?
На самом-то деле любопытно.
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Gleb от 29 Января 2003, 10:28:48
Решение проблемы "влоб" (работа только спинным мозгом, копчиковым отделом - то как я это сделал сразу):

на контент-пейджах:

1)




2)




3)



4)



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, последняя строка не воспринимается!
Как говорится
ЗДЕСЬ ВАМ НЕ ТУТ
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Xander от 29 Января 2003, 15:14:26
Gleb
А вы уверены, что надо писать именно

page: {size: landscape}

а не

@page {
size: landscape;
}

(как написано в стандарте)?
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Гость от 30 Января 2003, 09:55:08
Секунду!

@page {
size: landscape;
}

пишется в

@media print {
\\здесь\\
}

те
@media print{
@page {
size: landscape;
}
}

или указание @page {size: landscape;} само по себе приметяется как @media print ?
те
@media print {
\\наше описание\\
}
@page {size: landscape;}

На самом деле я уже проверил оба варианта, оба не работают ни в Ie 5, ни в Скапе и Мозе, ни в Опере 6 (а в ней и первый вариант оформления не срабатывает - не позиционирует она блок абсолютно, и всё тут).

Я вот что думаю:
пока я довольно смутно себе представляю что это за обьект такой \\page\\ и как с ним обращаться?
Считается ли, что это все между и ?
Тогда ему может мешать описание


?

Вобщем при первом знакомстве с печатью я слегка префигел: толи от СВОЕЙ тупости, толь от того, что кто-то очень постарался мне её показать; так что пламенный привет коллективам w3c и разработчиков браузеров (правда последние похоже находятся в ситуации, аналогичной моей.... хотя все равно странно - вроде специффикации пишутся именно для их служебного пользования, а для нас, юзеров в этой области, должны предназначаться документы категории учебников)
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Gleb от 30 Января 2003, 10:09:00
или все и из-за того, что страницы на таблицах ?
таблицу повернуть вроде можно, а то что вне её?
можно ли повернуть блок ?
зы пред месага - это я был
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Xander от 30 Января 2003, 11:23:42
мне уже самому интересно стало.
Ладно, попорчу сегодня немного бумаги, и скажу, как оно.
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Gleb от 31 Января 2003, 10:46:41
Да зачем портить бумагу: на бумаге все также как в броузере в Print Prewiev.

На следующей неделе сайт возможно будет доступен в Web, применено начальное решение (книжная ориентировка) - можно будет посмотреть. Сейчас я уже думаю что альбомная не так необходима, однако факт тупиковой ситуации с альбомной остаётся фактом и найти решение или ошибку уже самоценно само по себе.

Xander
Спасибо за участие и поддержку, изначально я закинул этот топик на 5 форумов аналогичной тематики, в 3-х из них - никакого отклика.
Название: Пага на печать: ориентировка листа; как задать по дефолту при печати landscape?
Отправлено: Xander от 01 Февраля 2003, 20:03:43
Gleb
проверил:
@media:print {
@page {
size: landscape;
}
}
Опера 6.0 и Мозилла понимают правильно, IE 5.0 - как обычно...