У меня есть отчет в формате HTML, который должен быть напечатан в альбомной форме из-за большого количества столбцов. Есть ли способ сделать это, без необходимости изменять настройки документа?
И какие варианты среди браузеров.
В вашем CSS вы можете установить свойство @page, как показано ниже.
@media print{@page {size: landscape}}
@Page является частью спецификации CSS 2.1, однако это size
не так, как подчеркнуто в ответе на вопрос : устарела ли @Page {size: landscape}? :
CSS 2.1 больше не определяет атрибут размера. Текущий рабочий проект для модуля CSS3 Paged Media действительно указывает его (но это не является стандартным или принятым).
Как указано, опция размера берется из черновой спецификации CSS 3 . Теоретически это может быть как размер страницы, так и ориентация, хотя в моем примере размер опущен.
Поддержка очень смешана с началом сообщения об ошибке, поданным в Firefox , большинство браузеров не поддерживают его.
Может показаться, что он работает в IE7, но это потому, что IE7 запомнит последний выбор пользователем ландшафта или портрета в предварительном просмотре (только перезапущен только браузер).
В этой статье есть некоторые предложения об использовании JavaScript или ActiveX, которые отправляют ключи в браузер пользователей, хотя они не идеальны и полагаются на изменение настроек безопасности браузеров.
Поочередно вы можете вращать содержимое, а не ориентацию страницы. Это можно сделать, создав стиль и применив его к телу, которое включает в себя эти две линии, но у этого также есть недостатки, создающие много проблем выравнивания и макета.
<style type="text/css" media="print">
.page
{
-webkit-transform: rotate(-90deg);
-moz-transform:rotate(-90deg);
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
</style>
Последняя найденная альтернатива - создать альбомную версию в формате PDF. Вы можете указать на это, когда пользователь выбирает печать, он печатает PDF. Однако я не мог получить это для автоматической печати работы в IE7.
<link media="print" rel="Alternate" href="print.pdf">
В заключение, в некоторых браузерах можно легко использовать относительность, используя параметр @page size, однако во многих браузерах нет верного пути, и это будет зависеть от вашего контента и среды. Возможно, поэтому Google Documents создает PDF при выборе печати, а затем позволяет пользователю открывать и распечатывать его.
@page size
Кажется, не работает на всех современных браузерах, только Firefox. Chrome и Opera оба игнорируют это, насколько я видел.size: landscape
НЕ является частью CSS2.1, хотя@page
правила таковы. Это, однако, часть CSS3. Для подтверждения попробуйте использовать W3C CSS Validator и введите@page {size: landscape}
и сравните результаты с «Мое решение:
Это работает в
IE
,Firefox
иChrome
источник
class
div был в ландшафте, а не на всей странице?Недостаточно просто вращать содержимое страницы. Вот правильный CSS, который работает в большинстве браузеров (Chrome, Firefox, IE9 +).
Сначала установите тело
margin
в 0, потому что в противном случае поля страницы будут больше, чем те, которые вы установили в диалоговом окне печати. Также установитеbackground
цвет для визуализации страниц.margin
,border
иbackground
необходимы для визуализации страниц.padding
должен быть установлен на требуемое поле печати. В диалоговом окне печати вы должны установить те же поля (в этом примере 10 мм).Размер страницы А4 составляет 210 х 297 мм. Вам нужно вычесть поля печати из размера. И установите размер содержимого страницы:
Я использую 276 мм вместо 277 мм, потому что разные браузеры немного по-разному масштабируют страницы. Поэтому некоторые из них будут печатать содержимое высотой 277 мм на двух страницах. Вторая страница будет пустой. Более безопасно использовать 276 мм.
Нам не нужно
margin
,border
,padding
,background
на печатной странице, так что удалить их:Обратите внимание, что источником трансформации является
0 0
! Также содержимое альбомных страниц должно быть перемещено на 276 мм вниз!Кроме того, если у вас есть смесь страниц портрета и пейзажа, IE будет уменьшать страницы. Мы исправим это, установив
-ms-zoom
1.665. Если вы установите значение 1,6666 или что-то в этом роде, то правая граница содержимого страницы может иногда обрезаться.Если вам нужна поддержка IE8 или других старых браузеров, которую вы можете использовать
-webkit-transform
,-moz-transform
,filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)
. Но для достаточно современных браузеров это не требуется.Вот тестовая страница:
источник
Цитируется из CSS-Discuss Wiki
источник
Попробуйте добавить это ваш CSS:
источник
size
Свойство это то , что вы после этого, как упоминалось. Чтобы установить ориентацию и размер вашей страницы при печати, вы можете использовать следующее:Вот ссылка на документацию @page .
источник
.css
файле, иначе, если оно встроенное, объявление boostrap по умолчаниюsize: a3
будет иметь приоритет.Возможно, вы сможете использовать правило CSS 2 @page, которое позволяет вам установить свойство size в альбомную ориентацию .
источник
Вы также можете использовать нестандартный режим записи атрибутов css только для IE
источник
не работает в Firefox 16.0.2, но работает в Chrome
источник
Я создал пустой документ MS с альбомной настройкой, а затем открыл его в блокноте. Скопировал и вставил следующее на мою HTML-страницу
Предварительный просмотр печати показывает страницы в альбомном размере. Похоже, что это нормально работает на IE и Chrome, а не на FF.
источник
Я пытался решить эту проблему один раз, но все мои исследования привели меня к элементам управления / плагинам ActiveX. Нет хитрости в том, что браузеры (все равно 3 года назад) разрешали изменять любые параметры печати (количество копий, размер бумаги).
Я приложил все усилия, чтобы предупредить пользователей о необходимости выбора «ландшафта» при появлении диалогового окна печати браузера. Я также создал страницу «предварительного просмотра», которая работала намного лучше, чем IE6! Наше приложение имело очень широкие таблицы данных в некоторых отчетах, и предварительный просмотр печати давал понять пользователям, когда таблица выплеснется с правого края листа (поскольку IE6 также не справлялся с печатью на 2 листах).
И да, люди все еще используют IE6 даже сейчас.
источник
Если вы хотите, чтобы этот стиль применялся к таблице, создайте один тег div с этим классом стиля, добавьте тег таблицы в этот тег div и закройте тег div в конце.
Эта таблица будет печататься только в альбомной ориентации, а все остальные страницы будут печататься только в портретном режиме. Но проблема в том, что если размер таблицы больше ширины страницы, мы можем потерять некоторые строки, а иногда и заголовки также пропускаются. Быть осторожен.
Хорошего дня.
Спасибо, Навин Меттапалли.
источник
Я попробовал ответ Дениса и столкнулся с некоторыми проблемами (портретные страницы не печатались должным образом после перехода к альбомным страницам), поэтому вот мое решение:
источник
Это также сработало для меня:
источник
Если вы хотите видеть пейзаж на экране перед печатью, а также печать, то в вашем CSS вы можете установить ширину 900px и высоту 612px.
ОП не упомянул размер А4. Я предполагаю, что это размер письма в моих числах выше.
источник
Вы можете попробовать следующее:
источник