Seite 1 von 1

Problem mit Beispiel Printer.pb

Verfasst: 19.12.2005 23:34
von Rumpelstilzchen
Wenn ich das Beispielprogramm "printer.pb" starte kommt die Fehlermeldung "There is no current 2D drawing object". Was mache ich falsch ? Gibt es sonst ein einfaches Beispiel für eine simple Ausdruckroutine ? Ich möchte lediglich einen reportartigen Textausdruck programmieren.
Dank für jede Hilfe,
Rumpelstilzchen

Verfasst: 19.12.2005 23:39
von Andre
Schau bitte mal ins CodeArchiv auf www.PureArea.net, da findest Du mehrere Beispiel-Codes zum Drucken.

Verfasst: 20.12.2005 21:32
von Rumpelstilzchen
Danke Andre für den Hinweis, aber beim Versuch das Beispiel "Print_DPI_independent.pb" (Rui Carvalho) aus dem CodeArchiv zu starten kam nur die Fehlermeldung "LoadFont() can´t be called inside a StartDrawing()/StopDrawing() block." Und warum funktioniert das simple Programm "printer.pb" (aus dem Examples-Verzeichnis) nicht ?
Ich habe schon einige komplexe techn. Anwendungen mit PB programmiert und sonst keine Probleme, zu meinem Glück fehlt nur noch das Ausdrucken der Ergebnisse.
(PB 3.94, Windows XP Prof.)
Gruß, Rumpelstilzchen

Verfasst: 21.12.2005 03:17
von Falko
Weil man davon ausgehen muss, das das LoadFont() vor dem
Startdrawing aufgerufen werden darf :mrgreen:

PS: Das steht nicht in der Hilfe :wink: . Man muss halt improvisieren.

Aber André wird's bestimmt noch dort hineinsetzen, was hier korrigiert ist.
Natürlich muss man auch ein eigenes Bitmap hinzufügen (Name.BMP) und
den Namen und das Verzeichnis anpassen. :allright:

Code: Alles auswählen

; English forum:
; Author: Rui Carvalho
; Date: 01. March 2003

;***************************
;Super Printer - DPI indepent print
;by Rui Carvalho - 2003
;
;Part of GIA - Lift Management Software
;Freeware
;***************************

;rui-carvalho@bigfoot.com

Declare ycm(x.f)
Declare xcm(x.f)


;
;Original printer code by Fred
;

If PrintRequester()

If StartPrinting("PureBasic Test")
FontID.l=LoadFont(0, "Arial", ycm(0.4))
FontID1.l=LoadFont(0, "Arial", ycm(1))

If StartDrawing(PrinterOutput())

DrawingFont(FontID.l);4mm font size

Locate(xcm(15), xcm(5.5)); locate at 15cm by 5,5cm
DrawText("PureBasic Printer Test")

DrawingFont(FontID1); 1 cm font size

Locate(xcm(10), ycm(20))
DrawText("PureBasic Printer Test 2")

If LoadImage(0, "PureBasiclogo.bmp"); The logo bitmap is bigger
ResizeImage(0, xcm(6), ycm(2)) ; resize image for 6cm by 2cm
DrawImage(ImageID(), xcm(1), ycm(1)); draw image at 1cm by 1cm
Else
MessageRequester("", "2", 0)
EndIf

FrontColor(100, 100, 100)
Box(xcm(2), ycm(6), xcm(6), ycm(10)); draw a 4cm by 4cm square

StopDrawing()
EndIf

StopPrinting()
EndIf
EndIf



;**** the trick !!!! ****

Procedure xcm(x.f)

result = x * (PrinterPageWidth()/21) ; 21cm A4
ProcedureReturn result

EndProcedure


Procedure ycm(x.f)

result = x * (PrinterPageWidth()/29.7) ; 29,7cm A4
ProcedureReturn result

EndProcedure


;Tested with fineprintpdf in multiple DPI's
;and on Xerox DC440 laser printer

Druckprobleme

Verfasst: 21.12.2005 22:14
von Rumpelstilzchen
Danke Falko, es funktioniert.

Rumpelstilzchen