Bonjour,

après des heures de recherche sur la question, je commence à sécher.

Je génère une image avec PHP, je m'explique.

Suite au remplissage d'un formulaire, une image est créée, l'image contient :
- Un background
- un code barre, généré par une méthode php
- Le nom et le prénom récupéré dans les input

J'utilise Ajax pour récupérer les données et les envoyées à mon contrôleur.

Mon contrôleur instancie une classe qui elle se charge de générer l'image.

J'aimerai qu'une fois l'image prête, l'imprimante par défaut soit sélectionnée, que l'impression soit lancée (sans aperçu ou demande de confirmation).

J'ai essayé pas mal de script javascript, rien n'y fait je passe toujours par un aperçu.

J'ai trouvé un script en python qui ferait le taf, le problème est le suivant :

- Lorsque l'image est prête, je suis obligé de l'enregistrer sur le serveur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
imagepng($img, $this->_save_path);
- Le scrypt python est appelé par le systeme (exec(...)) et va rechercher l'image, puis il l'imprime.

J'aimerai donc pouvoir éviter cette étape. Directement passé mon image GD en paramètre à mon script python et le lui faire imprimer.

Je vous balance le script actuel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from win32 import win32print
from pythonwin import win32ui
from PIL import Image, ImageWin, GdImageFile
 
def send(gdImg):
 
  # Constants for GetDeviceCaps
  HORZRES = 8
  VERTRES = 10
  LOGPIXELSX = 88
  LOGPIXELSY = 90
  PHYSICALWIDTH = 110
  PHYSICALHEIGHT = 111
  PHYSICALOFFSETX = 112
  PHYSICALOFFSETY = 113
 
  printer_name = win32print.GetDefaultPrinter ()
 
  hDC = win32ui.CreateDC ()
  hDC.CreatePrinterDC (printer_name)
  printable_area = hDC.GetDeviceCaps (HORZRES), hDC.GetDeviceCaps (VERTRES)
  printer_size = hDC.GetDeviceCaps (PHYSICALWIDTH), hDC.GetDeviceCaps (PHYSICALHEIGHT)
  printer_margins = hDC.GetDeviceCaps (PHYSICALOFFSETX), hDC.GetDeviceCaps (PHYSICALOFFSETY)
 
  # C'est ici que je récupère mon image GD passé en argument
  bmp = GdImageFile.open(gdImg)
 
  if bmp.size[0] > bmp.size[1]:
    bmp = bmp.rotate (90)
 
  ratios = [1.0 * printable_area[0] / bmp.size[0], 1.0 * printable_area[1] / bmp.size[1]]
  scale = min (ratios)
 
  hDC.StartDoc (file_name)
  hDC.StartPage ()
 
  dib = ImageWin.Dib (bmp)
  scaled_width, scaled_height = [int (scale * i) for i in bmp.size]
  x1 = int ((printer_size[0] - scaled_width) / 2)
  y1 = int ((printer_size[1] - scaled_height) / 2)
  x2 = x1 + scaled_width
  y2 = y1 + scaled_height
  dib.draw (hDC.GetHandleOutput (), (x1, y1, x2, y2))
 
  hDC.EndPage ()
  hDC.EndDoc ()
  hDC.DeleteDC ()
Du coup, quand je passe mon image GD en paramètre, il ne se passe rien, aucun retour.

Merci d'avance !