为何打印机会改变分辨率?用户,背景,什么?

时间:2010-08-28 20:44:44

标签: php python windows printing resolution

我在Windwos php服务器上使用exec从php运行.bat文件,其中php使用fast-cgi(和nginx)运行。运行此脚本的命令行是

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

其中$ cmd有些像“mybatfile.bat 45 1”

当我手动运行批处理文件时,它会运行一个python程序来读取数据库,获取一些数据并打印一个小报告。这一切都正确地100%正常工作。

从网页运行时,报告出来,所以我知道程序已运行。代码记录传递的参数。我知道这个电话是正确的。

从服务器/网页运行时,报告显示在同一打印机上,比从coammnd行运行时大约20%。

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.

由于 伊恩

1 个答案:

答案 0 :(得分:0)

破解了! 正在运行服务器的用户从未登录(自然),因此他们从未将屏幕分辨率从90 dpi更改。

另一方面,由于我使用的是大字体,因此屏幕分辨率发生了变化。 因此,当我运行打印时,它以120 dpi打印。当服务器运行它时,它以90 dpi打印。

解。

打开打印机后,重新读取实际分辨率,并计算比例因子。

对所有布局和定位使用比例因子 - 除了字体大小以外,无论如何都要正确。