Hallo,
hat irgendwer auf die Schnelle ein wenig Code, wie ich per ActiveX aus einem Xbase++-Programm heraus eine PDF drucken kann? Die Schwierigkeit (für mich zumindest) dabei ist: Der Reader soll nicht (sichtbar) geöffnet werden. Es geht nicht auf den Standarddrucker, den passenden Drucker muß ich also auch irgendwie mitgeben können. Der Dateiname der PDF inkl. Pfad liegt natürlich als Variable vor.
Ich weiß natürlich, wie ich den Reader per ActiveX anspreche. Aber das mit dem Drucker ist mir dann doch etwas zu hoch ...
Jan
PDF drucken
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
PDF drucken
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- 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: PDF drucken
Hallo Jan !
Falls dir das auch reicht, hier der VFP-Code dazu:
Funktioniert mit PDF, DOCX, XLSX usw.
Den Standard-Drucker und zurück kannst du mit den Win32-Api-Funktionen SetDefaultPrinter und GetDefaultPrinter setzen.
Hier (wieder VFP-Code als Beispiel)
Ich habe dir Code um ohne ActiveX Dokumente über die zugehörigen Anwendung zu drucken ohne diese zu Sehen.hat irgendwer auf die Schnelle ein wenig Code, wie ich per ActiveX aus einem Xbase++-Programm heraus eine PDF drucken kann?
Falls dir das auch reicht, hier der VFP-Code dazu:
Code: Alles auswählen
LPARAMETERS tcDocument AS STRING
*-- Zuerst die Parameter setzen
lcOperation = 'Print'
lcFileName = tcDocument
lcParameter = ''
lcWorkDir = ''
*-- Dokument mit der Standard-Anwendung ausdrucken.
ShellExecute( 0, lcOperation, lcFileName, lcParameter, lcWorkDir, 0 )
Den Standard-Drucker und zurück kannst du mit den Win32-Api-Funktionen SetDefaultPrinter und GetDefaultPrinter setzen.
Hier (wieder VFP-Code als Beispiel)
Code: Alles auswählen
DO declare
LOCAL cCurrentPrinter
cCurrentPrinter = GetDefaultPrinter()
? "Default printer:", cCurrentPrinter
IF SetDefaultPrinter("Microsoft XPS Document Writer") = 0
* 1801 - ERROR_INVALID_PRINTER_NAME
? "SetDefaultPrinter failed:", GetLastError()
ELSE
? "New default printer:", GetDefaultPrinter()
SetDefaultPrinter(m.cCurrentPrinter)
? "Default printer restored:", GetDefaultPrinter()
ENDIF
* end of main
FUNCTION GetDefaultPrinter
LOCAL cPrinter, nBufsize, nResult
nBufsize = 250
cPrinter = REPLICATE(CHR(0), nBufsize)
TRY
IF GetDefaultPrinterAPI(@cPrinter, @nBufsize) <> 0
cPrinter = SUBSTR(cPrinter, 1, AT(Chr(0),cPrinter)-1)
ELSE
cPrinter=""
ENDIF
CATCH
cPrinter=""
ENDTRY
RETURN m.cPrinter
PROCEDURE declare
DECLARE INTEGER GetLastError IN kernel32
DECLARE INTEGER SetDefaultPrinter IN winspool.drv STRING pszPrinter
DECLARE INTEGER GetDefaultPrinter IN winspool.drv as GetDefaultPrinterAPI STRING @pszBuffer, INTEGER @pcchBuffer
--
Hans-Peter
Hans-Peter
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: PDF drucken
ich habe, "auf die schnelle", leider nichts als "hidden" ActiveXJan hat geschrieben:hat irgendwer auf die Schnelle ein wenig Code, wie ich per ActiveX aus einem Xbase++-Programm heraus eine PDF drucken kann?
dann setzte mal die Grösse auf {0,0} oder die Position ausserhalb des sichtbaren BereichJan hat geschrieben:Die Schwierigkeit (für mich zumindest) dabei ist: Der Reader soll nicht (sichtbar) geöffnet werden.
man könnte aber auch per "Command Line Parameter" drucken
noch ein Tip den ich bei Adobe gelesen haben : das ganze als "Bild" ausdrucken ...AcroRd32.exe <filename>
The following switches are available:
/n - Launch a new instance of Reader even if one is already open
/s - Don't show the splash screen
/o - Don't show the open file dialog
/h - Open as a minimized window
/p <filename> - Open and go straight to the print dialog
/t <filename> <printername> <drivername> <portname> - Print the file the specified printer.
aber frage mich jetzt nicht wie ich an die Option mit XbpPrinter() komme
gruss by OHR
Jimmy
Jimmy
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: PDF drucken
Jan,
warum per ActiveX ?
Du kannst doch den Print direkt über Edgars Tool machen. Du doch auch die Funktionen der QuickPDF
direkt aufrufen ( oPDF:qCall() )
warum per ActiveX ?
Du kannst doch den Print direkt über Edgars Tool machen. Du doch auch die Funktionen der QuickPDF
direkt aufrufen ( oPDF:qCall() )
Gruß
Klaus
Klaus
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PDF drucken
Moin Klaus,
leider nein.Das klappt eben nicht in diesem Fall. Deswegen suche ich nach Alternativen.
Jan
leider nein.Das klappt eben nicht in diesem Fall. Deswegen suche ich nach Alternativen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.