cs_jeanpierro
Messages postés2Date d'inscriptiondimanche 17 août 2008StatutMembreDernière intervention 4 décembre 2011
-
18 nov. 2011 à 01:30
cs_jeanpierro
Messages postés2Date d'inscriptiondimanche 17 août 2008StatutMembreDernière intervention 4 décembre 2011
-
4 déc. 2011 à 21:15
Boujour ,
Merci a vous tous pour vos infos et vos astuce mais la je sèche en delphi.
J'utilise deux imprimantes
1) laser format A4 (21*29.7) en défaut
2) imprimant papier listing (21*30.5)
Je dois garder l'imprimante 1 par défaut et imprimer sur la deuxième
J'ai beau changé X. & Y.PixelsParPouce toujours le décalage.
Impossible de modifier Printer.PrinterIndex
Par contre si j'imprime 5 feuilles (ou +) en choisissant l'imprimant 2 pas défaut tous ce passe bien
Et si j'imprime 5 feuilles (ou +) en choisissant l'imprimant 2 et l'imprimant 1 par défaut j'ai un décalage car il garde le format A4 en mémoire de l'imprimant 1
//..
Uses printers
XPixelsParPouce := 220;
YPixelsParPouce := 145;
if PrintDialog1.Execute then
begin
Printer.BeginDoc;
cs_jeanpierro
Messages postés2Date d'inscriptiondimanche 17 août 2008StatutMembreDernière intervention 4 décembre 2011 4 déc. 2011 à 21:15
merci bien pour l'infos.
Je me douter bien qu'il manquer un paramètre vue que je voulais imposer mes dimension de format papier
J'ai trouvé ceci.
@+ jean
***___________
function Millimetres2PixelsX(Millims: integer): integer;
begin
result := Trunc(Millims / (25.4 / XPixelsParPouce));
end;
function Millimetres2PixelsY(Millims: integer): integer;
begin
result := Trunc(Millims / (25.4 / YPixelsParPouce));
end;
//______________
var
Device, Driver, Port: array[0..80] of Char;
DevMode: THandle;
pDevmode: PDeviceMode;
var
H: integer;
S: string;
R: TRect;
begin
***imposse mes dimmentions
// Get printer device name etc.
Printer.GetPrinter(Device, Driver, Port, DevMode);
// force reload of DEVMODE
Printer.SetPrinter(Device, Driver, Port, 0) ;
// get DEVMODE handle
Printer.GetPrinter(Device, Driver, Port, DevMode);
If Devmode <> 0 Then Begin
// lock it to get pointer to DEVMODE record
pDevMode := GlobalLock( Devmode );
If pDevmode <> Nil Then
try
With pDevmode^ Do Begin
// modify paper size
{ dmPapersize :=DMPAPER_A4;
dmPaperWidth:=DMPAPER_A4;
dmPaperLength:=DMPAPER_A4;
}
//*** ici on choisie les dimmentions
dmPapersize := DMPAPER_USER; // or 0
dmPaperLength := 2100; // 2100 mm
dmPaperWidth := 3050; // 3050 mm
// tell printer driver that dmPapersize field contains
// data it needs to inspect.
dmFields := dmFields or DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH;
// tell printer driver that dmPapersize field contains
// data it needs to inspect.
dmFields := pDevMode^.dmFields or DM_ORIENTATION;
dmOrientation :=DMORIENT_PORTRAIT;// DMORIENT_LANDSCAPE;
End;
Printer.SetPrinter(Device, Driver, Port, DevMode);
finally
// unlock devmode handle.
GlobalUnlock( Devmode );
end;
End;
***Puis on imprime
***soit PrintDialog1 ou printer.PrinterIndex := X; X=numeri imprimante
Printer.Canvas.TextOut(
//position du texte
***//a 1,5 cm a droite & 25 cm en bas
Millimetres2PixelsX(15),Millimetres2PixelsY(250) ,Mon texte?);
printer.EndDoc;
**fin