Genaues Drucken auf DIN A4

Anfängerfragen zum Programmieren mit PureBasic.
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

:-)

Beitrag von hiltwin »

Hallo Thorsten,

vielen Dank für die aufmunternden Worte *ggg*

Ne, ist schon ok. Sind wir ja schon mal zwei der halbwegs gefrusteten. Ich werd erstmal nen Messagerequester zwischenschieben, das der Anwender doch gefälligst den Drucker auf 144 dpi zu polen hat.

Weiterhin hab ich dann zur Lösung des Problems nun noch eine Routine geschrieben, die meine speziellen Ausdrucke fast 100% 1:1 (durch Javascript) in einem HTML-Dokument abbildet. Wer nun unbedingt nicht an seinem Drucker rumschrauben will, kann nun nach HTML exportieren von dort aus ausdrucken :-)

Werde mir gleich auch mal Dein Setup-Programm anschauen und wenn es für meine Belange brauchbar ist, auch verwenden. Hatte bei meiner Erstversion noch Immosetup ...

Frdl. Gruss
Hiltwin
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Zu den Fonts mit der gleichen ID laden geht, wenn man das StartDrawing...
Stopdrawing direkt nach dem Fontwechsel macht.
Also machste das ganze in zwei Abschnitte. Also für jedes
Wechseln des Fonts den StartDrawingblock erneut auswählen.

Hab zusätzlich DarkDragons Beispiel hinzufefügt. Da bei mir im PDF
nichts angezeigt wurde, habe ich aus 21 dann 2100 genommen.
Auf dem Drucker sieht das dann genau so aus, wie im PDF-Ausdruck.

Code: Alles auswählen

;Drucker sollte auf Hochformat eingestellt sein.
;Sollte man im Querformat drucken wollen muss man die xcm() und ycm() - Werte ebenfalls vertauschen.
;Hier  DarkDragons vergessenes Beispiel zur Druckeranpassung mit aufgeführt.
Procedure.l xcm(x.f)
 result = x * (PrinterPageWidth()/2100) ; 21cm A4
 ProcedureReturn result
EndProcedure

Procedure ycm(x.f)
 result = x * (PrinterPageHeight()/2970) ; 29,7cm A4
 ProcedureReturn result
EndProcedure

If PrintRequester()
  

  If StartPrinting("PureBasic Test")
      
      LoadFont(0, "Arial", 100)
      If StartDrawing(PrinterOutput())
      DrawingFont(FontID(0))
      DrawText(xcm(100),ycm(100),"PureBasic Printer Test")
      StopDrawing()
      
   
      LoadFont(0, "Verdana", 100)
      If StartDrawing(PrinterOutput())
      DrawingFont(FontID(0))
      DrawText(xcm(100),ycm(400),"PureBasic Printer Test 2")
      FrontColor(RGB(100,100,100))
      Box(0,0, xcm(100), ycm(100))
      StopDrawing() 
      
    EndIf
   
    StopPrinting()
  EndIf
  EndIf
 
EndIf
Bild
Win11 Pro 64-Bit, PB_6.11b1
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Beitrag von hiltwin »

Hmm :D

Manche Lösungen sind ja soo einfach :-)

Allerdings scheint da ja noch nicht ganz das Konzept, alles in einen Printbefehl zu bringen, hier angewandt worden zu sein.

So wie Locate rausgeflogen ist, hätte das hier ja auch rausfliegen können und bei DrawText integriert werden können ...

Allen ein schönes Wochenende!
Antworten