【问题标题】:Why does printer changes resolution? User, background, what?为什么打印机会改变分辨率?用户,背景,什么?
【发布时间】:2010-08-28 20:44:43
【问题描述】:

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

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

其中 $cmd 类似于“mybatfile.bat 45 1”

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

当它从网页运行时,报告出来了,所以我知道程序正在运行。代码记录传递的参数。我知道调用是正确的。

从服务器/网页运行时,报告显示在同一台打印机上,比从联合行运行时大约 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。

谢谢 伊恩

【问题讨论】:

  • 不涉及 css。我正在使用 QPainter。

标签: php python windows printing resolution


【解决方案1】:

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

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

解决方案。

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

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

【讨论】:

    猜你喜欢
    • 2014-12-29
    • 2020-11-01
    • 1970-01-01
    • 2011-11-25
    • 2015-10-27
    • 2012-06-20
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    相关资源
    最近更新 更多