2010-08-28 14 views
0

Je cours un fichier .bat à partir d'un php en utilisant exec sur un serveur Windwos php, où php est exécuté en utilisant fast-cgi (et nginx). La ligne de commande pour exécuter ce script estPourquoi l'imprimante change-t-elle la résolution? Utilisateur, arrière-plan, quoi?

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

Où cmd $ est somethign comme « mybatfile.bat 45 1 »

Quand je lance le fichier batch, il exécute manuellement un programme Python pour lire une base de données, obtenir tenir certaines données et imprimer un petit rapport. Et tout fonctionne correctement à 100%. Lorsqu'il est exécuté à partir de la page Web, le rapport sort, donc je sais que le programme est exécuté. Le code enregistre les paramètres transmis. Je sais que l'appel est correct. Lorsqu'il est exécuté à partir du serveur/de la page Web, le rapport apparaît sur la même imprimante environ 20% plus grande que lorsqu'il est exécuté à partir de la ligne de début.

Le script python utilise PyQt et ouvre l'imprimante en mode natif.

Le code est

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

Est-ce que quelqu'un sait pourquoi cela se produit - et que puis-je faire pour la corriger?

O/S est Windows 7 (64 bits) pour le développement et une version de serveur pour la production. Python 2.7 32 bits. QT version 4.

Merci Ian

+0

Que dit votre CSS? –

+0

Il n'y a pas de CSS impliqué. J'utilise un QPainter. – Ian

Répondre

0

Cracked it! L'utilisateur qui exécute le serveur ne s'est jamais connecté (naturellement) donc il n'a jamais changé sa résolution d'écran de 90 dpi. D'autre part, j'ai changé par la résolution de l'écran parce que j'utilise de grandes polices. Donc, quand j'ai couru l'impression, il a imprimé en 120 dpi. Lorsque le serveur l'a exécuté, il a imprimé en 90 dpi.

Solution. Après l'ouverture de l'imprimante, lisez la résolution réelle et calculez un facteur d'échelle.

Utilisez le facteur d'échelle pour toutes les mises en page et le positionnement, à l'exception des tailles de police dans les points qui seront correctes de toute façon.