Witam,
Program przetwarza ilość grafik odpowiednio do wybranego rodzaju papieru, czyli 1 grafika na A6, 2szt/A5, 4szt/A4 i 8szt/A3. Jednakże o ile nie ma problemu z A6 i A4 to na A5 (i sądzę, że na A3) druga strona wydruku jest odwrócona o 180 stopni. Rodzaj papieru wybieram w programie, aby za każdym razem nie wchodzić w ustawienia kopiarki.
Oto fragment mojego kodu:
try
with printer do begin
Title:=txt;
GetPrinter(Device, Driver, Port, DeviceMode);
DevMode:=GlobalLock(DeviceMode);
case rodz of
0: begin
DevMode^.dmOrientation:=1;
// DevMode^.dmPaperSize:=DMPAPER_A6;
DevMode^.dmPaperSize:=DMPAPER_USER;
DevMode^.dmPaperLength:=1500;
DevMode^.dmPaperWidth:=1000;
DevMode^.dmFields:=DevMode^.dmFields or DM_PAPERSIZE or
DM_PAPERLENGTH or DM_PAPERWIDTH;
end;
1: begin
DevMode^.dmOrientation:=2;
DevMode^.dmPaperSize:=DMPAPER_A5;
end;
2: begin
DevMode^.dmOrientation:=1;
DevMode^.dmPaperSize:=DMPAPER_A4;
end;
3: begin
DevMode^.dmOrientation:=2;
DevMode^.dmPaperSize:=DMPAPER_A3;
end;
end;
GlobalUnlock(DeviceMode);
SetPrinter(Device, Driver, Port, DeviceMode);
BeginDoc;
Druk(Bmp1,rodz,x,y,wx,wy,ox,oy);
Printer.NewPage;
Druk(Bmp2,rodz,x,y,wx,wy,ox,oy);
EndDoc;
end;
finally
end;
W związku z tym mam kilka pytań:
- Dlaczego "DMPAPER_A6" jest ignorowane, gdy wybieram A6 we właściwościach drukowania to pobiera papier A6, jeśli pozostawię bez zmian, kopiarka pobiera A4. Uzyskałem właściwy rezultat ustawiając rozmiar 10x15cm.
- W jaki sposób uzyskać właściwy tryb drukowania drugiej strony? Obecnie, jak już pisałem, po wybraniu A5 tylna strona jest odwrócona o 180 stopni. Jest błąd w moim kodzie? Czy istnieje polecenia odwrócenia strony o 180 stopni?
Procedura "Druk" drukuje wybrany obraz określoną ilość razy zależnie od rodz, x i y to marginesy, wx i wy wielkość obliczona do rozdzielczości drukarki, ox i oy odstępy pomiędzy kolejnymi obrazami.
Pozdrawiam.