Ответ 1
К сожалению, CSS3 Module: Paged Media позволяет все это произойти. Это правила относительно слишком больших страниц:
3.3.3. Отображение полей страницы, которые не соответствуют листам страниц
Если окно страницы не соответствует размерам страницы целевой страницы, пользовательский агент МОЖЕТ выбрать (в порядке предпочтения):
- Отобразите окно страницы с указанным размером на более крупном листе страницы.
- Поверните окно страницы 90 °, если это сделает окно страницы подходящим для листа страницы.
- Масштабируйте окно страницы, чтобы оно соответствовало листу страницы. (Нет необходимости поддерживать соотношение сторон страницы или любых элементов на странице при масштабировании, однако предпочтительным является сохранение формата изображения.) [Сделано в Chrome]
- Переформатировать содержимое страницы, включая "пролитие" на другие листы страниц. [сделанные многими другими или более старыми браузерами]
- Переполнение содержимого клипа (наименее предпочтительное).
Пользовательский агент должен проконсультироваться с пользователем перед выполнением этих операций.
3.3.4. Размещение окна страницы на листе
Когда размер страницы меньше размера страницы, пользовательский агент должен центрировать окно страницы на листе, так как это приведет к выравниванию двухсторонних страниц и предотвращению случайной потери информации, которая печатается рядом край листа.
И это правило, которое разбивает все ваши материалы position
ed:
3,7. Содержимое вне поля страницы
[...] Кроме того, когда коробки расположены абсолютно, они МОГУТ В конечном итоге в "неудобных" местах. Например, изображения МОГУТ быть размещены на край окна страницы. Аналогичным образом, когда ящики используют фиксированные или относительные позиционирование, они МОГУТ также оказаться вне поля страницы.
Спецификация для точного форматирования таких элементов лежит вне объем этого документа. Однако мы рекомендуем, чтобы авторы и пользовательские агенты соблюдают следующие общие принципы, касающиеся Содержимое вне поля страницы:
- Пользовательским агентам СЛЕДУЕТ избегать создания большого количества пустых ящиков для проверки позиционирования элементов (например, вы не хотите печать 100 пустых страниц). Обратите внимание, однако, что генерирование небольшого числа пустых ящиков страниц МОЖЕТ быть необходимо, чтобы почтить "левый" и "правый" значения для 'page-break-before' и 'page-break-after'.
- Авторы НЕ ДОЛЖНЫ позиционировать элементы в неудобных местах, чтобы избежать их рендеринга. Вместо:
- Чтобы полностью отключить генерацию ящиков, установите для свойства "display" значение "none".
- Чтобы сделать поле невидимым, установите свойство видимости.
- Пользовательские агенты МОГУТ обращаться к ящикам, расположенным за пределами окна страницы, несколькими способами, включая отбрасывание их или создание полей страницы для их в конце документа.
Взгляните на второй абзац раздела 3.7: Спецификация для точного форматирования таких элементов выходит за рамки настоящего документа. Поскольку нет другого документа и никакого другого руководства, то общий принцип, следующий за этим пунктом, каждый браузер может делать все, что он хочет.
Это один из недостатков, которые в настоящее время находятся в этом модуле CSS3. Тем не менее, я думаю, что эти недостатки не могут быть удалены с помощью CSS4 или пересмотренного модуля CSS3, поскольку разнообразие возможных таблиц стилей и результирующих макетов слишком велико. Также обратите внимание на небольшую сноску указанную в CSS Print Profile:
‡ Принтер МОЖЕТ игнорировать расположенные элементы, расположенные на странице, до положения текущего элемента в нормальном потоке.
Таким образом, в каждом браузере практически невозможно создать такой же эффект. В настоящее время единственным возможным способом создания переносимого документа является создание PDF файла с сторонним приложением или с помощью принтера PDF и самого любимого браузера. Каждый другой способ обречен на неудачу, если рекомендации W3C не являются строгими или поставщики браузеров реализуют все, что захотят.
См. также:
- Модуль CSS3: Paged Media (Рабочий проект, последняя редакция 2006)
- Профиль печати CSS (Рабочий проект, последняя редакция 2006)
Дополнительные примечания
Если у вас есть группа элементов position:absolute
, которые нужно распечатать, иногда возникает вопрос, действительно ли элемент должен быть абсолютным, или же тот же эффект может быть достигнут немного другим или более простым способом. Также обратите внимание, что вы должны использовать display:none
для каждого элемента, который действительно не нужен для печатных носителей, таких как объявления, навигационные файлы и т.д.