Я видел этот вопрос, который задают несколькими различными способами на ТАК и несколькими другими веб-сайтами, но большинство из них является или слишком конкретным или устаревшим. Я надеюсь, что кто-то может предоставить категорический ответ здесь, не потворствуя предположению.
Существует ли путь, или с CSS или с JavaScript, для изменения параметров принтера по умолчанию, когда кто-то печатает в их браузере? И конечно "печатью от их браузера" я имею в виду некоторую форму HTML, не PDF или некоторый другой сменный уверенный тип пантомимы.
Отметьте:
Если некоторые браузеры предлагают это, и другие не делают (или если Вы только знаете, как сделать это для некоторых браузеров), я приветствую определенные для браузера решения.
Точно так же, если Вы знаете об основном браузере, который имеет определенные ограничения против когда-либо выполнения этого, которое также полезно, но некоторая довольно актуальная документация ценилась бы. (просто говорящий "это идет вразрез с политикой безопасности XYZ", не очень убедительно, когда XYZ внес существенные изменения в упомянутой политике за прошлые три года).
Наконец, когда я говорю, "изменяют настройки печати по умолчанию", я не имею в виду навсегда, только для моей страницы, и я обращаюсь конкретно к печатным полям, заголовкам и нижним колонтитулам.
Я очень знаю, что CSS предлагает опцию изменения ориентации страницы, а также полей страницы. Одна из многой борьбы с Firefox. Если я установил поля страницы на 1 дюйм, это ADDS это к половине дюйма, это уже помещает в место.
Я очень хочу уменьшить использование PDFs на сайте моего клиента, но нарушение по представлении (а также отсутствие надежности) является их основным беспокойством.
Стандарт CSS позволяет выполнять расширенное форматирование. В CSS есть директива @page
, которая позволяет выполнять форматирование, применимое только к страничным носителям (например, бумаге). See http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html.
Недостатком является то, что поведение в различных браузерах не является последовательным. Safari до сих пор не поддерживает установку поля страницы принтера, но все остальные основные браузеры теперь поддерживают эту функцию.
С помощью директивы @page
вы можете указать поля страницы для принтера (что не то же самое, что обычные CSS поля HTML элемента):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Print Test</title>
<style type="text/css" media="print">
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
html
{
background-color: #FFFFFF;
margin: 0px; /* this affects the margin on the html before sending to printer */
}
body
{
border: solid 1px blue ;
margin: 10mm 15mm 10mm 15mm; /* margin you want for the content */
}
</style>
</head>
<body>
<div>Top line</div>
<div>Line 2</div>
</body>
</html>
Обратите внимание, что здесь мы в основном отключаем поля конкретной страницы для достижения эффекта удаления верхнего и нижнего колонтитулов, поэтому поля, которые мы задаем для тела, не будут использоваться в разрывах страниц (как прокомментировал Konrad) Это означает, что это будет работать правильно, только если печатный контент состоит только из одной страницы.
Это не работает в Firefox 3.6, IE 7, Safari 5.1.7 или Google Chrome 4.1.
Установка @page margin действительно имеет эффект в IE 8, Opera 10, Google Chrome 21 и Firefox 19.
Хотя в этих браузерах поля страницы установлены правильно для вашего контента, поведение не идеально в попытке решить проблему скрытия заголовка/футера.
В Internet Explorer, поля на самом деле установлены на 0 мм в настройках для этой печати, и если вы сделаете Preview, то получите 0 мм по умолчанию, но пользователь может изменить их в предварительном просмотре.
Вы увидите, что содержимое страницы действительно позиционируется правильно, но верхний и нижний колонтитулы при печати в браузере отображаются с непрозрачным фоном, что эффективно скрывает содержимое страницы в этой позиции.
В Firefox более новых версий, он позиционируется правильно, но отображается и текст заголовка/футера, и текст содержимого, так что это выглядит как плохая смесь текста заголовка браузера и содержимого вашей страницы.
В Opera при использовании непрозрачного фона в стандартном css содержимое страницы скрывает заголовок, а позиция header/footer конфликтует с содержимым. Довольно хорошо, но выглядит странно, если margin установлен на маленькое значение, что приводит к частичной видимости заголовка. Также неправильно устанавливается поле страницы.
В Chrome более новых версий верхний и нижний колонтитулы браузера скрываются, если отступ @page установлен настолько малым, что положение верхнего колонтитула конфликтует с содержимым. На мой взгляд, именно так это и должно происходить.
Итак, вывод таков: Chrome имеет лучшую реализацию этого в отношении скрытия заголовка/футера.
Поскольку вы упомянули "в браузере" и firefox, если вы используете Internet Explorer, вы можете отключить заголовок/футер страницы, временно установив значение в реестре, см. для примера здесь . AFAIK Я не слышал о способе сделать это в других браузерах. Ответы Дэниела и Микеля, кажется, сталкиваются друг с другом, я думаю, что где-то в реестре может быть похожая настройка для firefox, чтобы удалить заголовки/ножки или настроить их. Вы проверили это?
Надеюсь, это поможет и Счастливых праздников, С наилучшими пожеланиями, Том.