2010-08-28 11 views
0

我正在使用exec在一個Windwos php服務器上運行一個.bat文件,其中php是使用fast-cgi(和nginx)運行的。在命令行中運行此腳本是爲什麼打印機更改分辨率?用戶,背景,什麼?

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

其中$ cmd爲somethign像「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

感謝 伊恩

+0

你的CSS說什麼? – 2010-08-28 20:52:12

+0

沒有涉及的CSS。我正在使用QPainter。 – Ian 2010-08-29 15:23:04

回答

0

破解了! 正在運行服務器的用戶從未登錄(自然),因此他們從未將其屏幕分辨率從90 dpi改爲90。

另一方面,我已經改變了屏幕分辨率,因爲我使用大字體。 所以當我運行打印它打印120 dpi。當服務器運行它時,它以90 dpi的分辨率打印。

解決方案。

打開打印機後,讀回實際分辨率,然後計算比例因子。

對所有佈局和定位使用比例因子 - 除非點中的字體大小正確無論如何。