Отключение параметров печати браузера (верхние, нижние колонтитулы, поля) со страницы?
Я видел этот вопрос, заданный несколькими различными способами на SO и нескольких других сайтах, но большинство из них либо слишком специфичны, либо устарели. Я надеюсь, что кто-то может дать окончательный ответ здесь, не потворствуя спекуляциям.
есть ли способ, либо с помощью CSS или JavaScript, чтобы изменить настройки принтера по умолчанию, когда кто-то печатает в своем браузере? И, конечно же, под "печатью из своего браузера" я имею в виду некоторую форму HTML, а не PDF или какой-то другой плагин reliant mime-типа.
обратите внимание:
Если некоторые браузеры предлагают это, а другие нет (или если вы только знаете, как это сделать для некоторых браузеров), я приветствую браузерные решения.
точно так же, если вы знаете о главном браузере, который имеет определенные ограничения против когда-либо делать это, это также полезно, но некоторые довольно актуальную документацию будут оценены. (просто говоря "это идет вразрез с политикой безопасности XYZ" не очень убедительно, когда XYZ внес значительные изменения в указанную политику за последние три года).
наконец, когда я говорю "изменить настройки печати по умолчанию", я не имею в виду навсегда, только для моей страницы, и я имею в виду конкретно поля печати, верхние и нижние колонтитулы.
Я очень хорошо знаю, что CSS предлагает возможность изменения ориентации страницы, а также поля страницы. Одна из многих проблем связана с Firefox. Если я установлю поля страницы на 1 дюйм, он добавит это к половине дюйма, который уже есть поставить на место.
Я очень хочу сократить использование PDF-файлов на сайте моего клиента, но нарушение презентации (а также отсутствие надежности) являются их главной заботой.
9 ответов:
стандарт CSS позволяет некоторые расширенные форматирования. Там есть
@pageдиректива в CSS, которая включает некоторое форматирование, которое применяется только к подкачанным носителям (например, бумаге). См.http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html.недостатком является то, что поведение в разных браузерах не согласуется. Safari по-прежнему не поддерживает настройку поля страницы принтера вообще, но все остальные основные браузеры теперь поддерживают его.
С
любая последняя версия Chrome и Opera, а также Firefox 48 альфа 1 и выше
вы можете установить поле страницы на размер, который слишком мал, чтобы содержать текст, чтобы отключить это (заимствование из трепет'ы ответ):
@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 */ }<ol> <li> <a href="data:,No Javascript :-(" target="_blank">Middle-click to open in new tab</a> </li> <li> <a href="javascript:print()">Print</a> </li> </ol><!-- Hack to work around stack snippet restrictions --><script type=application/javascript>document.links[0].href="data:text/html;charset=utf-8,"+encodeURIComponent('<!doctype html>'+document.documentElement.outerHTML)</script>для версий Firefox до 48 альфа-1
вы можете добавить
mozNoMarginBoxesдо<html>- тег, чтобы предотвратить URL, номера страниц и другие вещи Firefox добавляет к полю страницы от печати.он работает в Firefox 29 и далее. вы можете увидеть снимок экрана разницы здесь или смотрите здесь для живого примера.
отметим, что
mozDisallowSelectionPrintатрибут в Примере не требуется удалить текст с полей; см. что делает атрибут mozdisallowselectionprint в PDF.js делать?.другие браузеры
к сожалению, похоже, что есть способ решить эту проблему в Internet Explorer, поэтому вам придется прибегнуть к PDF или попросить пользователей отключить тексты полей.
то же самое касается Safari; согласно комментарию @Luiz Perez, самые последние версии Safari (8, 9.1 и 10) по-прежнему не поддерживают
@pageдля подавления текста на полях.Я не могу найти ничего на краю и у меня нет установки Windows 10 доступна для тестирования.
Как @Awe сказал выше, это решение, которое подтверждено для работы в Chrome!!
просто убедитесь, что это внутри тегов заголовков:
<head> <style type="text/css" media="print"> @page { size: auto; /* auto is the initial value */ margin: 0mm; /* this affects the margin in the printer settings */ } body { background-color:#FFFFFF; border: solid 1px black ; margin: 0px; /* this affects the margin on the content before sending to printer */ } </style> </head>
Энтони
очень жаль, что так много людей не поняли ваш вопрос. У меня есть аналогичный запрос от клиента, который хочет удалить заголовок, номера страниц и нижний колонтитул html. В этом случае клиент представляет HTML-страницу, которая может использоваться в качестве официального сертификата. Добавленные URL, страница и заголовок являются иррелевантными и приводят к менее чем приятному конечному продукту. В некотором смысле, это просто выглядит дешево.
Media=Print не удалось отключите эти настройки браузера по умолчанию. Единственный обходной путь-сказать пользователю нажать кнопку "Gear" и включить/выключить эти элементы. Серьезно, я понятия не имел, что могу сделать это в течение 20 лет (и мы думаем, что типичный пользователь будет иметь ключ, чтобы нажать кнопку переключения?).
Если CSS поддерживает Media=Print, он должен поддерживать возможность управления всем опытом печати конечного пользователя. Я ценю, что браузеры предоставляют добавленные поля, но, почему бы не позволить CSS контролировать общую печать опыт-если это то, что нужно. 90% растворение может быть 100% с тремя другими полями! А просто:
#BrowserPrintDefaults{display:none}будет достаточно.
опять же, не имеет значения, хочет ли конечный пользователь распечатать его или нет (возможно, ваш клиент очень приватен и не хочет, чтобы печатные URL-адреса плавали вокруг. Или, может быть, исполнительная команда использует частные сайты совместной работы?). Рад защищать конечного пользователя, но если кто-то ищет ответ, не отвечайте, что это право конечный пользователь, чтобы показать или скрыть. Иногда это право клиента оплачивать счета.
Так....без взлома реестра или принуждения пользователя переключать настройки в режиме предварительного просмотра, кто-нибудь найдет ответ?
невозможно изменить настройки принтера, поля или любые другие настройки браузера, временно или постоянно, из CSS или JavaScript.
хотя это неудачно для вашего подлинного требования, эти ограничения являются причиной того, что 95%+ веб-пользователей поддерживают JavaScript в своих браузерах. (Статистика Браузера)
попробуйте этот код, работает 100% для меня:
наландшафт:<head> <style type="text/css"> @page{ size: auto A4 landscape; margin: 3mm; } </style> </head>на Portait:
<head> <style type="text/css"> @page{ size: auto; margin: 3mm; } </style> </head>
поскольку вы упомянули "в своем браузере" и firefox, если вы используете Internet Explorer, вы можете отключить верхний/нижний колонтитул страницы, временно установив значение в реестре, см. здесь для примера. AFAIK я не слышал о способе сделать это в других браузерах. Ответы Даниэля и Микеля, похоже, сталкиваются друг с другом, я думаю, что где-то в реестре может быть аналогичная настройка для firefox, чтобы удалить верхние/нижние колонтитулы или настроить их. Вы это проверили?
надеюсь, что это поможет и счастливых праздников, С уважением, Том.
Я решил свою проблему, используя некоторые css на веб-странице.
<style media="print"> @page { size: auto; margin: 0; } </style>
Comments