Почему принтер меняет разрешение? Пользователь, фон, что? - PullRequest
0 голосов
/ 29 августа 2010

Я запускаю файл .bat из php с помощью exec на php-сервере Windwos, где php запускается с помощью fast-cgi (и nginx). Командная строка для запуска этого скрипта:

  pclose(popen("start / ". $cmd, "r"));  

Где $ cmd - это что-то вроде "mybatfile.bat 45 1"

Когда я запускаю пакетный файл вручную, он запускает программу на python для чтения базы данных, получения некоторых данных и печати небольшого отчета. И все это работает на 100% правильно.

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

При запуске с сервера / веб-страницы отчет отображается на том же принтере примерно на 20% больше, чем при запуске из строки coammnd.

Скрипт python использует PyQt и открывает принтер в основном режиме.

Код

    self.printer = QPrinter()
    self.printer.setPrinterName(printer)
    self.printer.setPageSize(QPrinter.A5)
    self.printer.setOrientation(QPrinter.Portrait)
    self.painter = QPainter(self.printer)

Кто-нибудь знает, почему это происходит - и что я могу сделать, чтобы исправить это?

O / S - это Windows 7 (64 бит) для разработки и версия для Сервера для производства. Python 2.7 32 бит. QT версия 4.

Спасибо Ian

1 Ответ

0 голосов
/ 29 августа 2010

Трещины это!Пользователь, который работает на сервере, никогда не входил (естественно), поэтому они никогда не меняли разрешение экрана с 90 точек на дюйм.

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

Решение.

После открытия принтера прочитайте фактическое разрешение назад и вычислите масштабный коэффициент.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...