Вопрос

Я пытаюсь распечатать сетку ярлыков на лист бумаги A4.

Пользователь указывает левую и верхнюю маржу бумаги в мм.

A4 - 210 x 297.

Siverlight сообщает мне, что печать в области печати составляет 793 x 1122, если я добавлю область для печати и поля вместе.

printDocument.PrintPage += (s, e) =>
    {
        var printableArea = e.PrintableArea;
        var pageMargin = e.PageMargins;
    }

Если я сделаю математику, соотношение между 210 и 793 и 297 и 1122 - 3,777777, которое (точнее) - 34/9.

Почему это это значение?

Это всегда это значение независимо от пункта назначения печати? Я проверил фактический принтер и документ XPS, настроенный как A4 по размеру, и он появляется Чтобы быть так, но я не хочу быть пойманным через 6 месяцев.

Если это меняется, как я могу решить эти отношения в коде?

Это было полезно?

Решение

После немного большего исследования я выпустил ответ.

Размеры Silverlight используют размер бумаги в независимых устройствах - рассчитывается как 1/96турнир на дюйм.

297 мм = 11,6929 дюймов

Умножьте это на 96, и вы получите 1122,51

Сходным образом

210 мм = 8,2677 дюйма

который работает до 493,70

Итак, теперь я понимаю, откуда берутся цифры, я могу с радостью использовать свой немного более точный расчет 34/9 вместе с комментарием, объясняющим, откуда он поступает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top