+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

LlStgsysDrawPage + Device Koordinaten?


(Guest) #1

Hallo L&L Gurus!

Ich verwende LL14 mit C# und .NET Framework 2.0.
Über die Core.LlStgsysDrawPage gebe ich die Seiten einzeln an einen Drucker aus. Das mach ich deshalb weil ich
verschiedene Seiten an verschieden Schächte drucken muss.

Der Funktion LlStgsysDrawPage gibt man ja einen Parameter vom Typ “RECT” mit, welcher die Größe des Druckbaren Bereichs
in Device Kooridnaten angibt. Wenn ich ein leeres RECT angebe, dann stimmt der Ausdruck wenn ich auf meinen Amyuni Drucker
drucke (PDF Drucker), wenn ich jedoch an einen ‘echten’ Drucker drucke, dann wird nur ca. 1/4 des Druckbaren Bereichs verwendet.
D.h. der ganze Ausdruck ist zusammengeschrumpft auf das linke obere Viertel ausgedruckt.

Hat jemand eine Idee für eine Lösung?
Ich habe die PageBounds vom Drucker, jedoch sind das keine Device Koordinaten und die Umrechnung klappt nicht so ganz.

Vielen Dank für eure Hilfe!
Gruß

Thomas


(Guest) #2

Hallo Thomas,
ich versuche aktuell auch Schachtgesteuert zu drucken. Allerdings habe ich einen anderen Ansatz mit anderen Problemen :wink:

Man kann eine erstellte PreviewFile in ein ListLabelDocument laden und dann bei jeder Seite die gedruckt wird in die Page- und Printersettings eingreifen. Für dich sähe das in etwa so aus:

ListLabelDocument doc = new ListLabelDocument();

//Eventhandler:
doc.BeginPrint += new PrintEventHandler(doc_BeginPrint);
doc.QueryPageSettings += new QueryPageSettingsEventHandler(doc_QueryPageSettings)
doc.EndPrint += new PrintEventHandler(doc_EndPrint);

//zuweisen der entsprechenden PreviewFile zum ListLabelPrintDocument
doc.PreviewFile = pf;

//Druck Start
doc.Print();

Hier dann die Eventhandler: (Begin und End muss man ja nicht unbedingt nutzen, interessant ist QueryPageSettings)

//EventHandler um während des Drucks die PageSettings zu beeinflussen.
void doc_QueryPageSettings(object sender, QueryPageSettingsEventArgs e)
{
if (llPageCounter == 1)
{
e.PageSettings.PrinterSettings.PrinterName = <String: Druckername>
e.PageSettings.PaperSource = e.PageSettings.PrinterSettings.PaperSources[<int: Schachtnummer>];
}
else if(llPageCounter > 1)
{
e.PageSettings.PrinterSettings.PrinterName = <String: Druckername>
e.PageSettings.PaperSource = e.PageSettings.PrinterSettings.PaperSources[<int: Schachtnummer>];
}

        llPageCounter++;
    }

Das bau natürlich darauf auf, dass du die Seiten mitzählst und die Schachtnummern kennst. Ich glaube mann kann die Schächte aber auch über ihre Bezeichnungen ansprechen.

Ich habe diesen Ansatz da oben erst gestern angefangen und es funktionert noch nicht richtig. Allerdings gab es mit LL14 bisher ja nur Probleme was die Druckerzuweisung etc betrifft. Ich habe mir gestern noch das aktuelle ServicePack gezogen und hoffe das ich damit heute mehr erfolg habe.

Falls du diesen Ansatz ausprobieren solltest würde ich mich freuen wenn ich ein Feedback über das Ergebnis bekommen könnte :slight_smile:
Falls du über deinen ursprünglichen Ansatz eine Lösung findest schachtgesteuert zu drucken (ich habe es damals über Core.LlStgsysDrawPage probiert als die Funktion noch bugged war) wär es auch schön zu erfahren wie du es angestellt hast.

Gruß,
Colin Groebel
cg@2rsoftware.de

Hallo L&L Gurus!

Ich verwende LL14 mit C# und .NET Framework 2.0.
Über die Core.LlStgsysDrawPage gebe ich die Seiten einzeln an einen Drucker aus. Das mach ich deshalb weil ich
verschiedene Seiten an verschieden Schächte drucken muss.

Der Funktion LlStgsysDrawPage gibt man ja einen Parameter vom Typ “RECT” mit, welcher die Größe des Druckbaren Bereichs
in Device Kooridnaten angibt. Wenn ich ein leeres RECT angebe, dann stimmt der Ausdruck wenn ich auf meinen Amyuni Drucker
drucke (PDF Drucker), wenn ich jedoch an einen ‘echten’ Drucker drucke, dann wird nur ca. 1/4 des Druckbaren Bereichs verwendet.
D.h. der ganze Ausdruck ist zusammengeschrumpft auf das linke obere Viertel ausgedruckt.

Hat jemand eine Idee für eine Lösung?
Ich habe die PageBounds vom Drucker, jedoch sind das keine Device Koordinaten und die Umrechnung klappt nicht so ganz.

Vielen Dank für eure Hilfe!
Gruß

Thomas