Установка размера бумаги принтера с помощью css

Размер моего принтера по умолчанию - A4, и мне нужно распечатать payslip размером 8.5inx5.5in с помощью старого матричного принтера. Я попытался установить каждый payslip DIV на фиксированную высоту,

width: 175.6mm;
height:123.7mm;
margin-left:auto;
margin-right:auto;

Несмотря на то, что он идеально подходит для размера payslip, но после печати бумага будет продолжать скатываться до конца, потому что бумага для payslip все соединена в отличие от A4. И я не хочу вносить какие-либо изменения в размер бумаги для принтера, поэтому я установил:

@media print 
{
   @page
   {
    size: 8.5in 5.5in;
    size: portrait;
  }
}

но предварительный просмотр в Google Chrome по-прежнему показывает следующее:

enter image description here

На самом деле это возможно? Или есть ли способ заставить печать принтера прекратить печать после печати распечатки, чтобы она не продолжала скатывать бумагу? (что, я думаю, должно быть невозможно)

P.S. Я использую только Google Chrome.

** Обновлено:

Я заметил, что размер бумаги изменится после того, как я выберу "Сохранить как PDF", если я выберу свой принтер по умолчанию, размер бумаги снова будет неправильным.

Ответ 1

В прошлый раз, когда я проверил, печать @media очень плохо поддерживается основными браузерами. У меня была проблема, подобная вашей, и после нескольких недель попыток мне пришлось отказаться и перейти на серверную библиотеку генерации PDF файлов (PDF4NET). Если вам нужен набор, печатные документы - я не думаю, что HTML собирается сделать трюк.

Ответ 2

Сегодня я использую Chrome 32.0.1700.107 м

стандарт W3 CSS3, установленный для размеров страниц отлично работает с опцией "SAVE AS PDF" прямо из Chrome в интерфейсе печати. Помните, что использование принтера очень отличается в интерфейсе хромированной печати, так как используется размер по умолчанию для принтеров, но в случае SAVE AS PDF он принимает размер, который был установлен CSS.

У меня были проблемы с разными интерфейсами и решениями для разных разработчиков (например, создание PDF непосредственно с сервера, который был слишком тяжел в обработке и беспорядочен в коде, или предлагая пользователям использовать интерфейс печати Windows и т.д.). Это отличное решение для меня и, по-видимому, является окончательным!

Теперь можно создать PDF с нужным размером бумаги, используя только CSS3 на сайте, и не нужно использовать стороннее программное обеспечение и другие трюки.

В вашем случае лучшим решением является просто изменить размер бумаги по умолчанию, заданный в принтере, который я посоветовал пользователям с небольшим плавающим div, который дал совет и скрыт от печати. Но поскольку вы "не хотите вносить какие-либо изменения в размер бумаги принтера", если вы хотите избежать изменений на стороне сервера, вам потребуется еще один шаг от персоны printig: сначала сохраните PDF файл, а затем отправьте его на принтер только что созданного PDF.

Ответ 3

возможно эта работа.

@media print 
{
   @page
   {
    size: 8.5in 5.5in;
    size: landscape;
  }
}

или

@media print 
{
   @page
   {
    size: 5.5in 8.5in ;
    size: landscape;
  }
}

Ответ 4

Это сработало для меня именно так:

@page {
  size: <%= @size_card[0] %>cm  <%= @size_card[1] %>cm;
  margin: 0;
}

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