LL erzeugte PDF später nochmals drucken ohne Dialog
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 153
- Registriert: Do, 06. Apr 2006 10:51
- Danksagung erhalten: 3 Mal
LL erzeugte PDF später nochmals drucken ohne Dialog
Hallo,
eine pdf-Datei die mit LL20 erstellt wurde und im Dateisystem abgelegt ist, soll später nochmals ausgedruckt werden.
Beim späteren druck soll jedoch kein zusätzlicher Dialog erscheinen.
Kann man in LL sowas machen ?
Oder muß ich über einen anderen Weg drucken.
Grüße
Peter
eine pdf-Datei die mit LL20 erstellt wurde und im Dateisystem abgelegt ist, soll später nochmals ausgedruckt werden.
Beim späteren druck soll jedoch kein zusätzlicher Dialog erscheinen.
Kann man in LL sowas machen ?
Oder muß ich über einen anderen Weg drucken.
Grüße
Peter
Gruss Peter
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Hallo Peter !
Das weiß ich (noch) nicht.Kann man in LL sowas machen ?
Können mittels ShellExecute und der passenden Option:Oder muß ich über einen anderen Weg drucken.
Code: Alles auswählen
lcOperation = 'PRINT'
lnShowWindow = SW_HIDE && SW_HIDE = 0
*-- EXE starten und das Dokument drucken
lnReturn = ShellExecute( 0, lcOperation, lcFileName, "", "", lnShowWindow )
Mit einer aktuellen 2.0 Version kannst die ShellExecute vor dem Aufruf so definieren:
EXTERN LONG ShellExecute( nHWND AS LONG, @cOperation AS STRING, @cFile AS STRING, @cParameters AS STRING @cDirectory AS STRING, nShowCmd AS LONG ) IN SHELL32.DLL
--
Hans-Peter
Hans-Peter
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Das kann L&L m.E. nicht, jedenfalls nicht über das StorageSystem, das ich aber verwende, um als LL-Vorschau gespeicherte Dokumente später abermals zu drucken. Ich habe die Doku nicht hier (bin im Urlaub), aber für den Druck von PDF-Kopien verwende ich den VSPDF-Viewer (als Komponente).
Herzlich,
Tom
Tom
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2128
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Servus Hans-Peter,HaPe hat geschrieben: ↑Di, 06. Feb 2018 17:52 Mit einer aktuellen 2.0 Version kannst die ShellExecute vor dem Aufruf so definieren:
EXTERN LONG ShellExecute( nHWND AS LONG, @cOperation AS STRING, @cFile AS STRING, @cParameters AS STRING @cDirectory AS STRING, nShowCmd AS LONG ) IN SHELL32.DLL
[/code]
da fehlt ein Komma und lt. Doku müsste der Aufruf wohl so sein?
Code: Alles auswählen
EXTERN INTEGER ShellExecute(nHWND AS UINTEGER, @cOperation AS STRING, @cFile AS STRING, @cParameters AS STRING, @cDirectory AS STRING, nShowCmd AS INTEGER) IN SHELL32.DLL
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
da ShellExecuteA ein Rückgabe Wert hat sollte man eine Function daraus machen damit man die "andere" Möglichkeit auch bekommt wenn es "nicht passt"
Code: Alles auswählen
FUNCTION ShellOpenFile( cPath, cFILE, cAction )
LOCAL lSuccess
LOCAL Retvar := .F.
DEFAULT cAction TO "open" // "print"
*----------------------------------------------------------
* Created from ContactUs.PRG
* Posted to Alaska Generic NG 3/15/01
* By Anand K Gupta Sun, 24 Dec 2000
*----------------------------------------------------------
#define SW_HIDE 0
* #define SW_NORMAL 1
* #define SW_SHOWMINIMIZED 2
* #define SW_SHOWMAXIMIZED 3
* #define SW_MAXIMIZE 3
* #define SW_SHOWNOACTIVATE 4
* #define SW_SHOW 5
* #define SW_MINIMIZE 6
* #define SW_SHOWMINNOACTIVE 7
* #define SW_SHOWNA 8
* #define SW_RESTORE 9
* #define SW_SHOWDEFAULT 10
lSuccess := @SHELL32:ShellExecuteA( APPDESKTOP() :GetHWND(), ;
cAction, ;
cPath + cFile, ;
0, ;
CURDIR(), ;
SW_HIDE ) // SW_NORMAL
DO CASE
CASE lSuccess > 32 // Aufruf erfolgreich
Retvar := .T.
CASE lSuccess = SE_ERR_NOASSOC // Keine verknüpfte Anwendung
// Falls ShowOpenWithDialog = True, wird der Dialog
// "öffnen mit" für diese Datei angezeigt:
// Shell "RunDLL32 shell32.dll,OpenAs_RunDLL " & Filename
@ SHELL32:OpenAs_RunDLL( APPDESKTOP() :GetHWND(), ;
0, ;
cPath + cFile, ;
0, ;
CURDIR(), ;
SW_HIDE ) // SW_NORMAL
// Die Auswahlmöglichkeit wird als Erfolg gewertet:
Retvar := .T.
OTHERWISE
// ShellExecute war erfolglos.
// Boolean-Standardwert False zurückgeben
DO CASE
CASE lSuccess = SE_ERR_FNF
MSGBOX( "File not found.", cPath + cFILE )
CASE lSuccess = SE_ERR_PNF
MSGBOX( "Path not found.", cPath + cFILE )
CASE lSuccess = SE_ERR_ACCESSDENIED
MSGBOX( "Access denied !", cPath + cFILE )
CASE lSuccess = SE_ERR_OOM
MSGBOX( "Out of memory !", cPath + cFILE )
CASE lSuccess = SE_ERR_SHARE
MSGBOX( "Cannot share an open file.", cPath + cFILE )
CASE lSuccess = SE_ERR_ASSOCINCOMPLETE
MSGBOX( "File association information not complete.", cPath + cFILE )
CASE lSuccess = SE_ERR_DDETIMEOUT
MSGBOX( "DDE operation timed out.", cPath + cFILE )
CASE lSuccess = SE_ERR_DDEFAIL
MSGBOX( "DDE operation failed.", cPath + cFILE )
CASE lSuccess = SE_ERR_DDEBUSY
MSGBOX( "DDE operation is busy.", cPath + cFILE )
CASE lSuccess = SE_ERR_DLLNOTFOUND
MSGBOX( "Dynamic-link library not found.", cPath + cFILE )
ENDCASE
Retvar := .F.
ENDCASE
RETURN Retvar
gruss by OHR
Jimmy
Jimmy
- Klaus Schuster
- Foren-Administrator
- Beiträge: 371
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Hast Du Dir schon einmal SumatraPDF angesehen? Sehr leicht zu verwenden & schnell.
Gruß Klaus
- Klaus Schuster
- Foren-Administrator
- Beiträge: 371
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
der schweigsame Einsatz ist eine Einzeiler:
RunShell( '-print-to-default -exit-on-print Rechnungen\' + journal->Pdf, 'SumatraPDF.exe', TRUE, TRUE )
Nachteil: Du musst ein externes Tool einsetzen...
RunShell( '-print-to-default -exit-on-print Rechnungen\' + journal->Pdf, 'SumatraPDF.exe', TRUE, TRUE )
Nachteil: Du musst ein externes Tool einsetzen...
Gruß Klaus
-
- Rekursionen-Architekt
- Beiträge: 153
- Registriert: Do, 06. Apr 2006 10:51
- Danksagung erhalten: 3 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Vielen Dank für Eure Vorschläge,
werde mal SumatraPDF ausprobieren.
Schein ja recht einfach einsetzenbar.
Grüße
Peter
werde mal SumatraPDF ausprobieren.
Schein ja recht einfach einsetzenbar.
Grüße
Peter
Gruss Peter
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
es gibt auch für den Acrobat Reader code hier, sumatra ist aber auch gut und einfach zu integrieren (einfach EXE ins Verzeichnis kopieren und aufrufen)
Gruß
Hubert
Hubert
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Hallo Werner und Klaus !
SumatraPDF ist wirklich klein und schnell.
Bei meiner Lösung muss irgend ein PDF-Viewer installiert sein, weil ShellExecute die für die Dateiendung PDF von Windows vorgesehene Anwendung einsetzt.
Ja, das Komma habe ich versemmelt.da fehlt ein Komma und lt. Doku müsste der Aufruf wohl so sein?
Ja das ist so, auch bei meiner Lösung.Nachteil: Du musst ein externes Tool einsetzen...
SumatraPDF ist wirklich klein und schnell.
Bei meiner Lösung muss irgend ein PDF-Viewer installiert sein, weil ShellExecute die für die Dateiendung PDF von Windows vorgesehene Anwendung einsetzt.
--
Hans-Peter
Hans-Peter
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
@Peter
wenn Du das PDF hast kannst Du doch das einfach mit Acrobat Reader ausdrucken - ohne Dialog:
siehe Adobe Acrobat SDK Doku - Seite 24:
https://www.adobe.com/content/dam/acom/ ... er_faq.pdf
Du musst halt den Acrobat-Pfad hinterlegen oder aus der Registry auslesen.
Müsste dann mir RunShell() auch gehen...
wenn Du das PDF hast kannst Du doch das einfach mit Acrobat Reader ausdrucken - ohne Dialog:
Code: Alles auswählen
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /n /s /o /h "dokument.pdf" "Druckername"
oder
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /t "dokument.pdf" "Druckername"
https://www.adobe.com/content/dam/acom/ ... er_faq.pdf
Du musst halt den Acrobat-Pfad hinterlegen oder aus der Registry auslesen.
Müsste dann mir RunShell() auch gehen...
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Ich persönlich habe bei externen Programmen die sumatra EXE mitgeliefert, aber auf dem Zielrechner nachgesehen ob es einen Standard-PDF Viewer gibt.
So erhält der Anwender seinen zu sehen, wenn er verfügbar ist. Sumatra ist halt immer verfügbar und die EXE muss auch nicht installiert werden.
So erhält der Anwender seinen zu sehen, wenn er verfügbar ist. Sumatra ist halt immer verfügbar und die EXE muss auch nicht installiert werden.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Hallo
um ein bereits vorhandenes PDF zu drucken gibt es doch eine einfache und sehr schnelle Funktion.
hbprint_printoutPDF( cPdffile , cDruckername, nDruckSchachtnummer )
Die ist aus Hubert's HBPrint Klasse, irgendwo in einem Beitrag habe ich die Anpassungen beschrieben damit diese verschiedene Formate der PDF' Druckt. Wir Drucken damit alle PDF's auch solche welche die Kunden quer, hoch oder in A3 gespeichert haben.
Gruss Carlo
um ein bereits vorhandenes PDF zu drucken gibt es doch eine einfache und sehr schnelle Funktion.
hbprint_printoutPDF( cPdffile , cDruckername, nDruckSchachtnummer )
Die ist aus Hubert's HBPrint Klasse, irgendwo in einem Beitrag habe ich die Anpassungen beschrieben damit diese verschiedene Formate der PDF' Druckt. Wir Drucken damit alle PDF's auch solche welche die Kunden quer, hoch oder in A3 gespeichert haben.
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
das muss wohl HBPrintPDF sein, ich weiß gar nicht ob die Druckfunktion in der kostenlosen lite Version enthalten ist.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Hallo Hubert
es gab doch einen Thread damals hatte ich doch arge Probleme beim Drucken von PDF's zum Schluss habe ich doch dann meine hbprint_printoutPDF() Funktion noch in den Thread gestellt. Die Namensgebung kam vermutlich daher weil mein Code in einer PRG aus dem Ordner HBPrint steht und die Funktion ein PDF Druckt -> PrintOutPDF. Ich habe diese Funktion unter Verwendung ausschliesslich einiger stark angepassten Grundfunktionen aus deiner freien Klasse im Jahr 2010 erstellt. Ein gleicher Namen mit einem deiner Produkte ist wirklich zufällig.
Wenn du nichts dagegen hast stelle ich auch gerne die komplette PRG ein. Mit allen nötigen Teilen aus deiner Klasse damit die Funktion läuft.
Gruss Carlo
(Beabeitet: Code entfernt. Dieser ist nun im Anhang weiter unten)
es gab doch einen Thread damals hatte ich doch arge Probleme beim Drucken von PDF's zum Schluss habe ich doch dann meine hbprint_printoutPDF() Funktion noch in den Thread gestellt. Die Namensgebung kam vermutlich daher weil mein Code in einer PRG aus dem Ordner HBPrint steht und die Funktion ein PDF Druckt -> PrintOutPDF. Ich habe diese Funktion unter Verwendung ausschliesslich einiger stark angepassten Grundfunktionen aus deiner freien Klasse im Jahr 2010 erstellt. Ein gleicher Namen mit einem deiner Produkte ist wirklich zufällig.
Wenn du nichts dagegen hast stelle ich auch gerne die komplette PRG ein. Mit allen nötigen Teilen aus deiner Klasse damit die Funktion läuft.
Gruss Carlo
(Beabeitet: Code entfernt. Dieser ist nun im Anhang weiter unten)
Zuletzt geändert von ramses am So, 11. Feb 2018 19:41, insgesamt 2-mal geändert.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Ich habe gar nichts dagegen, wollte nur klar stellen, dass
1. HBPrintPDF und nicht der HBPrinter die Basis ist, und
2. wenn die Print-Funktion in der lite enthalten ist, es kostenlos geht ... ansonsten wäre ja die mittlerweile sehr teure "Foxit Quick PDF Library" zu kaufen.
und wenn ich durch die Funktionsliste gehe, fehlt leider die Funktion "PrintDocument" (Rendering and printing), also wenn man keine ältere Lizenz hat, ist das wirklich teuer.
1. HBPrintPDF und nicht der HBPrinter die Basis ist, und
2. wenn die Print-Funktion in der lite enthalten ist, es kostenlos geht ... ansonsten wäre ja die mittlerweile sehr teure "Foxit Quick PDF Library" zu kaufen.
und wenn ich durch die Funktionsliste gehe, fehlt leider die Funktion "PrintDocument" (Rendering and printing), also wenn man keine ältere Lizenz hat, ist das wirklich teuer.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: LL erzeugte PDF später nochmals drucken ohne Dialog
Hallo
im Zuge der aktuellen kompletten APP Umstellung stelle ich auch noch alle alten verbliebenen normalen Ausdrucke auf L&L um. Zur bearbeitung von PDF-Files blieben noch einige Funktionen übbrig die noch mit der HBPrint Klasse / QuickPDF ausgeführt werden. Es sind dies:
Wenn jemand Interesse an den Funktionen hat bitte PN ich stelle diese gerne zur Verfügung. Sie sind alle mit der QuickPDFDLL 14.11 getestet.
Gruss Carlo
im Zuge der aktuellen kompletten APP Umstellung stelle ich auch noch alle alten verbliebenen normalen Ausdrucke auf L&L um. Zur bearbeitung von PDF-Files blieben noch einige Funktionen übbrig die noch mit der HBPrint Klasse / QuickPDF ausgeführt werden. Es sind dies:
Code: Alles auswählen
// HBPrint_mergePDFArr2File --> Mehrere PDF zu einem PDF zusammensetzen
// HBPrint_PrintOutPDF --> Ausdruck einer ein- / mehrseitiger PDF Datei auf A4 Papier
// HBPrint_GetPDFPageCount --> Ruckgabe Anzahl Seiten im PDF
// HBPrint_ExtractPDFPages --> PDF in einzelne Files/Seiten aufteilen oder ein Bereich in ein PDF-File exportiern
// HBPrint_ConvertPDF2JPG --> PDF in einzelne Seiten zerlegen und als JPG File speichern
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo