Запрещение браузера печатает опции (заголовки, нижние колонтитулы, поля) от страницы?

Я видел этот вопрос, который задают несколькими различными способами на ТАК и несколькими другими веб-сайтами, но большинство из них является или слишком конкретным или устаревшим. Я надеюсь, что кто-то может предоставить категорический ответ здесь, не потворствуя предположению.

Существует ли путь, или с CSS или с JavaScript, для изменения параметров принтера по умолчанию, когда кто-то печатает в их браузере? И конечно "печатью от их браузера" я имею в виду некоторую форму HTML, не PDF или некоторый другой сменный уверенный тип пантомимы.

Отметьте:

Если некоторые браузеры предлагают это, и другие не делают (или если Вы только знаете, как сделать это для некоторых браузеров), я приветствую определенные для браузера решения.

Точно так же, если Вы знаете об основном браузере, который имеет определенные ограничения против когда-либо выполнения этого, которое также полезно, но некоторая довольно актуальная документация ценилась бы. (просто говорящий "это идет вразрез с политикой безопасности XYZ", не очень убедительно, когда XYZ внес существенные изменения в упомянутой политике за прошлые три года).

Наконец, когда я говорю, "изменяют настройки печати по умолчанию", я не имею в виду навсегда, только для моей страницы, и я обращаюсь конкретно к печатным полям, заголовкам и нижним колонтитулам.

Я очень знаю, что CSS предлагает опцию изменения ориентации страницы, а также полей страницы. Одна из многой борьбы с Firefox. Если я установил поля страницы на 1 дюйм, это ADDS это к половине дюйма, это уже помещает в место.

Я очень хочу уменьшить использование PDFs на сайте моего клиента, но нарушение по представлении (а также отсутствие надежности) является их основным беспокойством.

179
задан Anthony 25 December 2009 в 10:33
поделиться

2 ответа

Стандарт 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 имеет лучшую реализацию этого в отношении скрытия заголовка/футера.

197
ответ дан 23 November 2019 в 20:12
поделиться

Поскольку вы упомянули "в браузере" и firefox, если вы используете Internet Explorer, вы можете отключить заголовок/футер страницы, временно установив значение в реестре, см. для примера здесь . AFAIK Я не слышал о способе сделать это в других браузерах. Ответы Дэниела и Микеля, кажется, сталкиваются друг с другом, я думаю, что где-то в реестре может быть похожая настройка для firefox, чтобы удалить заголовки/ножки или настроить их. Вы проверили это?

Надеюсь, это поможет и Счастливых праздников, С наилучшими пожеланиями, Том.

0
ответ дан 23 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: