PDF drucken

Alles rund um die Acrobat-Ansteuerung und Nutzung von PDF-Dokumenten per AX

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

PDF drucken

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: PDF drucken

Beitrag von HaPe »

Hallo Jan !
hat irgendwer auf die Schnelle ein wenig Code, wie ich per ActiveX aus einem Xbase++-Programm heraus eine PDF drucken kann?
Ich habe dir Code um ohne ActiveX Dokumente über die zugehörigen Anwendung zu drucken ohne diese zu Sehen.
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 )
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)

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: PDF drucken

Beitrag von AUGE_OHR »

Jan hat geschrieben:hat irgendwer auf die Schnelle ein wenig Code, wie ich per ActiveX aus einem Xbase++-Programm heraus eine PDF drucken kann?
ich habe, "auf die schnelle", leider nichts als "hidden" ActiveX
Jan hat geschrieben:Die Schwierigkeit (für mich zumindest) dabei ist: Der Reader soll nicht (sichtbar) geöffnet werden.
dann setzte mal die Grösse auf {0,0} oder die Position ausserhalb des sichtbaren Bereich :)

man könnte aber auch per "Command Line Parameter" drucken
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.
noch ein Tip den ich bei Adobe gelesen haben : das ganze als "Bild" ausdrucken ...
aber frage mich jetzt nicht wie ich an die Option mit XbpPrinter() komme
gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: PDF drucken

Beitrag von Koverhage »

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() )
Gruß
Klaus
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: PDF drucken

Beitrag von Jan »

Moin Klaus,

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.
Antworten