Настройка параметров печати из JS

Так... из того, что я могу найти в Google, я не могу найти способ использовать Javascript для установки моих настроек печати (читать: поля, ориентации, нижний колонтитул и т. д.).

Я собираюсь сказать своему боссу, что то, что он хочет сделать, невозможно. Я хотел проверить, будете ли вы штрафовать людей за это. Пожалуйста, дайте мне знать.

Я обнаружил,что в FF вы можете использовать некоторые настройки user_pref(key, val) для настройки предпочтений пользователя, но это не работает для более чем 90% моих пользователей. Я я ищу что-то, что будет охватывать IE (как можно больше), FF и Chrome.

спасибо ниндзя, которые отвечают.

4 ответов


Так... после целого дня поисков я думаю, что нашел ответ на свой собственный вопрос. Короче говоря, ответ заключается в том, что JS и/или CSS не позволят вам переопределить настройку страницы по умолчанию браузера клиента.

вот что я пробовал. Если вы создадите простой HTML файл с и пустой головой, и телом, которое содержит только текст "тест", вы сможете увидеть, что я тестировал.

  1. таблицы стилей печати не могут решить вашу проблему. Установка поля на тело 0px 0px 0px 0px-это не то же самое, щелкнув Файл > Параметры страницы и настройки все поля в 0. Несмотря на то, что печатные листы стиля хотели бы, чтобы вы поверили, они разные. Попробуйте сами. Вот почему таблицы стилей печати не решают вашу проблему.

  2. JS не может решить вашу проблему. Можете ли вы представить, если каждая страница, которую вы посетили, изменила ваши локальные свойства JS? Чтобы разрешить каждой странице доступ к локальным настройкам печати, нарушение безопасности, и не допускается. Из-за этого JS не может решить вашу проблему.

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


вы можете установить ориентацию страницы и поля с помощью CSS:

@page {
   size: landscape;
   margin: 10%
}

вы также можете установить нижний колонтитул в нижней части каждой страницы с помощью <tfoot> элемент.

EDIT: как указал Beejamin, это дом на полпути. Вы не можете изменить настройки принтера (те, которые отображаются в диалоговом окне печать при нажатии кнопки печать). Кроме того, IE сильно не хватает поддержки @page селектор, (огляделся, чтобы увидеть, поддерживает ли IE9 его и не смог найти что угодно.) В качестве альтернативы вы всегда можете попробовать применить его к телу в таблице стилей печати.

body {
   size: landscape;
   margin: 10%
}

хотя с моей головы я не знаю, насколько это эффективно.


Я думаю, что вам в значительной степени не повезло, пытаясь сделать это в HTML и CSS. Большая часть проблемы заключается в том, что поля принтера зависят от типа принтера: большинство принтеров имеют минимальное поле, которое они могут установить (эквивалентно пространству, которое им нужно для захвата страницы, и левому/правому движению головы.

допустимые поля также будут варьироваться в зависимости от размера бумаги (маржа обычно может быть меньше на меньшем листе, чем максимум, который примет принтер). Для например, при загрузке бумаги формата А5 в принтер формата А4 поля, которые можно задать, будут отличаться от полей при загрузке формата А4.

ни одна из этой информации не доступна на веб-странице, через CSS, javascript или что-либо еще.

теперь, что касается решения, PDF-файлы позволяют вставлять некоторые настройки принтера по умолчанию в файл-Acrobat pro позволит вам указать параметры масштабирования, количество копий по умолчанию и т.д. Я бы не прочь поспорить, что есть больше потенциальных настроек доступно в формате файла, который Acrobat не предоставляет.

существует множество полнофункциональных инструментов генерации PDF для любой серверной технологии, которую вы используете. хорошие из них даже позволят вам предоставить URL - адрес и визуализировать HTML+CSS в PDF-контент-это в некоторой степени автоматизирует генерацию. Однако генерация PDF-файлов довольно интенсивна, и она не будет бесшовной для пользователя (и потребует плагинов PDF для большинства браузеров).

Я знаю, что это не идеально, но я бы посмотрел на эту улицу. Удачи!


использование CSS поможет вам достичь этого.

@page {
  margin:0cm;
}