Seite 1 von 1

Wechsel von Hoch- auf Querformat

Verfasst: Di, 29. Aug 2017 11:04
von georg
Guten Morgen,


im Rahmen einer Liste möchte ich während des Drucks von Hoch- auf Querformat und zurück wechseln. Der Wechsel geschieht jeweils, wenn eine Seite gedruckt ist, bevor die nächste Seite begonnen wird.

Ich habe das testweise einmal so dargestellt:

Code: Alles auswählen

FUNCTION FormatTest()
	Local aSize
	Local cPrinter
	Local oPrinter, oPS

	oPrinter := XbpPrinter():new()
	cPrinter := "Adobe PDF"
	oPrinter:create(cPrinter)
	oPS := XbpPresSpace():new()
	aSize := oPrinter:paperSize()
	aSize := {aSize[5] - aSize[3], aSize[6] - aSize[4]}
	oPS:create(oPrinter, aSize, GRA_PU_LOMETRIC)

	oPrinter:startDoc()
	oPrinter:startPage()
	GraStringAt(oPS, {100, 100}, "Das ist ein Test")
	oPrinter:endPage()

	/*
	aSize := ASort(aSize, , , .T.)
	oPS:setPageSize(aSize, GRA_PU_LOMETRIC)
	oPrinter:setOrientation(XBPPRN_ORIENT_LANDSCAPE)
	oPS:configure()
	*/

	oPrinter:startPage()
	GraStringAt(oPS, {100, 100}, "Das ist ein Test")
	oPrinter:endPage()

	oPrinter:endDoc()

RETURN (.T.)
Das funktioniert, beide Seiten werden im Hochformat gedruckt. Nun entferne ich die Kommentare, drehe also die Seitengrösse und die Orientierung, drucke und ... bekomme die erste Seite mit Text, die zweite Seite ist leer, aber im Querformat.

Nun bin ich (endlich mal) sprachlos und höre, was Ihr mir dazu sagt. #-o

Re: Wechsel von Hoch- auf Querformat

Verfasst: Di, 29. Aug 2017 17:47
von AUGE_OHR
georg hat geschrieben: Di, 29. Aug 2017 11:04

Code: Alles auswählen

	oPS := XbpPresSpace():new()
	... 
	oPS:create(oPrinter, aSize, GRA_PU_LOMETRIC)

	oPS:setPageSize(aSize, GRA_PU_LOMETRIC)
        ...
	oPS:configure()
Nun bin ich (endlich mal) sprachlos und höre, was Ihr mir dazu sagt. #-o
bei einem o:configure() gehen IMHO alles "verloren" was du vorher gesetzt hattest.

ich würde es so probieren

Code: Alles auswählen

oPS:configure(oPrinter, aSize, GRA_PU_LOMETRIC)

Re: Wechsel von Hoch- auf Querformat

Verfasst: Di, 29. Aug 2017 21:45
von georg
Hallo, Jimmy -


habe ich so mal umgesetzt:

Code: Alles auswählen

	aSize := ASort(aSize, , , .T.)
//	oPS:setPageSize(aSize, GRA_PU_LOMETRIC)
//	oPrinter:setOrientation(XBPPRN_ORIENT_LANDSCAPE)
	oPS:configure(oPrinter, aSize, GRA_PU_LOMETRIC)
Ergebnis: zwei Seiten im Hochformat. M.E. muss das :setOrientation() da schon rein, damit der Drucker versteht, dass er das Papier um 90° gedreht bedrucken soll.

Dann habe ich den Code so erweitert:

Code: Alles auswählen

	aSize := ASort(aSize, , , .T.)
//	oPS:setPageSize(aSize, GRA_PU_LOMETRIC)
//	oPrinter:setOrientation(XBPPRN_ORIENT_LANDSCAPE)
	oPS:configure(oPrinter, aSize, GRA_PU_LOMETRIC)
	oPrinter:setOrientation(XBPPRN_ORIENT_LANDSCAPE)
Und damit hat es funktioniert. Danke für Deinen Hinweis, hat mich auf die richtige Spur gebracht.