我在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.由于 伊恩
答案 0 :(得分:0)
破解了! 正在运行服务器的用户从未登录(自然),因此他们从未将屏幕分辨率从90 dpi更改。
另一方面,由于我使用的是大字体,因此屏幕分辨率发生了变化。 因此,当我运行打印时,它以120 dpi打印。当服务器运行它时,它以90 dpi打印。解。
打开打印机后,重新读取实际分辨率,并计算比例因子。
对所有布局和定位使用比例因子 - 除了字体大小以外,无论如何都要正确。