Drucken von LL-Dateien (List&Label)

Moderator: Moderatoren

Antworten
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 251
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Drucken von LL-Dateien (List&Label)

Beitrag von adrian »

Hallo LL-Benutzer

Hier mal ein Problem, welches mich schon einige Jahre Ärger, nun aber bei einem Kunden wieder ein grosses Problem darstellt.

Folgende Ausgangslage: Ich lege alle Aufträge (Rechnungen, Lieferscheine, Offerten etc.) in der Auftragsverwaltung ab, damit man auch nach Jahren auf diese zugreifen kann, soweit kein Problem.

Nun wechselt der Kunde den Server, in meinem Fall haben wir auf Server 2022 gewechselt, und da gibt es natürlich neue Druckertreiber etc. etc.

Beim erstellen von LL-Aufträgen kann ich ja mit "LlPrintCopyPrinterConfiguration" den gewünschten Drucker zuweisen, dies geht problemlos.

Doch in einer bestehender LL-Datei werden ja die Drucker-Informationen genommen, welche beim erstellen der Datei festgelegt waren. Und da gibt es eben ein Problem, wenn nun der Drucker nicht mehr vorhanden ist. Es wird normalerweise ja dann der Default Drucker genommen, doch bei diesem Kunden (neu eben Windows 2022 Server) habe ich das Problem, dass es von 5 Mal 2 Mal geht und 3 Mal werden irgendwelche Druckinformationen genommen.

Hat von Euch eine Lösung, wie man über das Programm einer bestehenden LL-Datei einen Drucker (inkl. Schacht etc.) zuweisen kann, daher ähnlich wie mit "LlPrintCopyPrinterConfiguration"?

Adrian
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8870
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 54 Mal
Danksagung erhalten: 224 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Tom »

Du kannst doch bei LlStgsysStoragePrint() direkt den Zieldrucker angeben. Das funktioniert bei mir schon seit Jahren und Jahrzehnten völlig problemlos:

Code: Alles auswählen

LlStgsysStoragePrint(<cVorschauDatei>,<cVorschauPfad>,<cDrucker>,<cDrucker),1,20,1,LS_PRINTFLAG_FIT,"Ausdruck",oOwner:GetHWND()
Herzlich,
Tom
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 210
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: Drucken von LL-Dateien (List&Label)

Beitrag von BJelinek »

Hallo Adrian,

vielleicht auf dem Server einen Drucker als Standard definieren und nicht von
Windows verwalten lassen. Mal so eine Idee.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 251
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von adrian »

Hoi Tom

Ja, LlStgsysStoragePrint() verwende ich auch seit Jahren, und da hast Du natürlich absolut Recht, dass es mit dieser Funktion gehen würde. Da ich bei den 2 Parameter "LPCTSTR pszPrinterName1, LPCTSTR pszPrinterName2" eben nichts eingetragen habe, kommt dies
Wenn ein Druckername NULL ist, versucht List & Label, den Drucker inklusive der zugehörigen Einstellungen aus der Preview-Datei zu lesen.
zu tragen.

Doch wie komme ich zu den gewünschten Parameter? Ich habe in meinem Programm eine Maske, wo die Kunden die Drucker mit den Einstellungen auswählen können und da werden ja .LSP Dateien erstellt, welche ich eben dann mit "LlPrintCopyPrinterConfiguration" der entsprechenden Ausgabe zuweise. Diese gehen aber mit "LlStgsysStoragePrint()" eben nicht, weiss nicht weshalb Sie nicht den gleichen Weg genommen haben (oder ich setze dies falsch ein)

Wie übergibst Du den korrekten Drucker mit den Einstellungen (doppelseitig etc.)

Adrian
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8870
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 54 Mal
Danksagung erhalten: 224 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Tom »

Hallo, Adrian.

Hast Du mal "LLSet/GetPrinterInPrinterFile" angefasst?

Da es in Xbase++ etwas hakelig ist, DevMode-Strukturen zu manipulieren (geht nur mit OT4XB, aber nicht verlässlich), empfehlen wir unseren Nutzern, Drucker mit Schachtansteuerungen usw. zu konfigurieren, also im Zweifelsfall einen Drucker mehrfach ("LaserHupe s/w Schacht oben" usw.). Das ist im täglichen Umgang tatsächlich auch einfacher als das Hantieren in Druckerkonfigurationen. Insofern kann ich Dir leider nicht helfen. Hast Du mal ins Combit-Forum geschaut?
Herzlich,
Tom
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 251
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von adrian »

Hoi Tom

Danke für die rasche Meldung. Das mit den LSP Dateien und Zuweisung direkt an eine neue LL-Datei geht wunderbar. Die DruckerEinstellungen kann der Kunde mit LLPrinterSetup() selber pro Listenart definieren mit allen EInstellungen.

Das Problem ist eben nur in fertig erstellen Dateien. Dein Hinweis ""LLSet/GetPrinterInPrinterFile" finde ich aber in der Doku nicht, daher eine Funktion mit GetPrinterInPrinterFile() gibt es in meiner Doku nicht (habe noch LL22, da mir die LL23er Version nur Ärger in der Darstellung machte)

Adrian
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8870
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 54 Mal
Danksagung erhalten: 224 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Tom »

Herzlich,
Tom
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 251
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von adrian »

Danke Dir Tom, wird angeschaut und eventuell muss ich noch ein Upgrade auf LL27 machen, den dieser Befehl gab es eben in der 22er Version noch nicht.

Adrian
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8870
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 54 Mal
Danksagung erhalten: 224 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Tom »

Die beiden gibt es schon laaaaaange. Schau mal in Deine CH-Dateien von L&L.
Herzlich,
Tom
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 577
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 24 Mal
Danksagung erhalten: 100 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Marcus Herz »

So aus purer Neugierde:
Warum speicherst du als LL Datei und nicht PDF?
Gruß Marcus

Es gibt keine Grenzen, aber du kannst welche ziehen.
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 251
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von adrian »

Hoi Marcus

Genau aus dem Grund der Benutzerfreundlichkeit.

Der Kunde kann bei einer Druckwiederholung auswählen, ob er dies auf den Drucker, Bildschirm oder eMail haben möchte. Je nachdem werden Parameter gesetzt (z.B. die Default-eMail Adresse aus der Kundenkartei etc.) oder per eMail wird in ein Dokument bei einer Rechnung die Rechnung und gleichzeitig der QR-Einzahlungschein zusammengehängt und dargestellt.

Wenn eine Druckwiederholung eines Kassen-Coupons gemacht werden soll, soll dieser natürlich auch wieder auf dem Kassendrucker gedruckt werden etc. Oder eine Kopie aus einem anderen Schacht wie das Original etc.

Bei einem PDF wird immer der Default Drucker genommen, und der Kunde müsste bei allem zuerst den richtigen Drucker auswählen. (dies kann er aber bei einer LL-Vorschau j auch)

Dies geht auch alles wunderbar, Ausser man tauscht ein Drucker aus. Und da bricht eben LL Ihre eigene Philosophy mit den .LSP Dateien.

Ich drucke die Dateien über

Code: Alles auswählen

LlStgsysStoragePrint(sPfad+"GRAFIK\B001000.LL",0,0,0,1,1000,1, LS_PRINTFLAG_FIT,"",SetAppWindow():GetHwnd())
und hier kann eben keine Druckerdatei angegeben werden.

Den Befehl welcher Tom angegeben hat, sorry Tom dies habe ich ja selber schon lange mal angeschaut aber man wird Älter und vergisst..., hat den Fehler, dass hier der Druckernamen angegeben werden muss.
INT LlSetPrinterInPrinterFile (HLLJOB hJob, UINT nObjType,
LPCTSTR pszObjName, INT nPrinter, LPCTSTR pszPrinter,
_PCDEVMODE pDM);
Ideal wäre eben eine Funktion, mit der man die .LSP Datei an eine .LL Datei linken könnte, und ich verstehe da nicht weshalb dies nicht geht und da eben ein anderer Weg genommen worden ist, oder ich den Weg nicht sehe. Aber ich muss mich mal mit dem Druckernamen auseinandersetzen, dann könnte ich ja einen Namen definieren und diesen für alte Dateien verwenden.

Adrian
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8870
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 54 Mal
Danksagung erhalten: 224 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Tom »

Ich habe auch lange LL-Dateien als Dokumentenkopien verwendet, weil die quasi "on the fly" entstehen, aber tatsächlich gibt es zwei einfache Wege, um PDF (parallel) zu nutzen:

a) Man durchläuft die Druckroutine zweimal, und einmal eben mit Exporteinstellungen - das hat den Vorteil, dass man die Kopie auch noch mit leicht geänderten Inhalten ansteuern kann, so dass sie z.B. das Wort "Kopie" enthält, kostet aber Performance (doppelt so lange)

b) Man lässt alles, wie es ist, und konvertiert die Preview-Datei einfach über das StorageSystem (LLStgSysConvert). Dann hat man die LL-Datei, falls man die direkt in der Druckroutine benötigt, und mit wenig Zusatzaufwand (öffnen, konvertieren, schließen - ist ein Dreizeiler) die PDF oder PDF/A. Das geht natürlich auch nachträglich, mit den bereits gespeicherten Previewdateien. Um PDF zu drucken, und das ist der Nachteil, braucht man allerdings gesonderte Tools, mindestens einen Acrobat Reader

Aber es kann sein, dass das nicht bei allen Lizenztypen von L&L möglich ist.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8870
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 54 Mal
Danksagung erhalten: 224 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Tom »

Ideal wäre eben eine Funktion, mit der man die .LSP Datei an eine .LL Datei linken könnte
Aber Du kannst die LSP-Datei doch einsammeln und für LlSetPrinterInPrinterFile wiederverwenden.
Herzlich,
Tom
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 577
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 24 Mal
Danksagung erhalten: 100 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Marcus Herz »

Ich muss bei einem Kunden auch bereits erstelle PDFs ausdrucken. Mit Foxitreader kann man den Drucker in der Kommandozile mitangeben. Da druck ich vor Weihanchten (Saisongeschäft) hunderte von PDFs am Tag auf verschiedenen Druckern. Problemlos und kostenlos
Gruß Marcus

Es gibt keine Grenzen, aber du kannst welche ziehen.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8870
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 54 Mal
Danksagung erhalten: 224 Mal
Kontaktdaten:

Re: Drucken von LL-Dateien (List&Label)

Beitrag von Tom »

Bei aller Liebe - bevor ich irgendwas über die Kommandozeile steuere, ohne die geringste Kontrolle zu haben, nutze auch ich lieber LlStorageSysStoragePrint - da bekomme ich einen Rückgabewert und kann den Drucker direkt angeben. Adrian sucht allerdings vor allem nach Möglichkeiten, auch die Details der Druckerkonfiguration mitzugeben (also eine komplette DevMode-Struktur). Außerdem hat man den PreviewViewer (LLPreviewDisplayEx) als Control, und der ist sehr viel rasanter als jedes PDF-Tool. Und kann in zig Varianten lässig eingebettet werden.

Im Übrigen setze ich Foxit (auch für PDF-Analyse und ähnliches) als Control ein, da ist ein bisschen mehr Kommunikation und Fehlerbehandlung möglich. 8) Und irgendwo haben wir auch noch das gute, alte VSPDFViewer als AX-Control im Einsatz, wo es nach wie vor gute Dienste fürs Anzeigen, Manipulieren und Drucken von PDF-Dokumenten zur Verfügung stellt.
Herzlich,
Tom
Antworten