Настройка параметров печати из JS - PullRequest
16 голосов
/ 14 июня 2011

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

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

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

Спасибо ниндзя, который ответил.

Ответы [ 4 ]

15 голосов
/ 14 июня 2011

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

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

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

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

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

13 голосов
/ 14 июня 2011

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

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

Вы также можете установить нижний колонтитул внизу каждой страницы, используя элемент <tfoot>.

РЕДАКТИРОВАТЬ: Как указывает Beejamin, это дом на полпути.Вы не можете изменить настройки принтера (те, которые появляются в диалоговом окне «Печать» при нажатии кнопки «Печать»).Кроме того, IE крайне не хватает поддержки селектора @page (огляделся, чтобы узнать, поддерживает ли его IE9 и ничего не может найти).В качестве альтернативы вы всегда можете попробовать применить его к телу в вашей таблице стилей печати. ​​

body {
   size: landscape;
   margin: 10%
}

Хотя я не уверен, насколько это эффективно.

4 голосов
/ 14 июня 2011

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

Допустимые поля также будут различаться в зависимости от размера бумаги (поле может быть меньше на меньшем листе, чем максимально допустимое для принтера). Например, если вы загружаете бумагу формата A5 в принтер формата A4, поля, которые вы можете установить, будут отличаться от тех, которые вы загружаете в формат A4.

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

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

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

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

2 голосов
/ 24 августа 2017

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

@page {
  margin:0cm;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...