PDF drucken

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

PDF drucken

Beitrag von Jan » Di, 07. Feb 2017 16:39

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
Foren-Moderator
Foren-Moderator
Beiträge: 529
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: PDF drucken

Beitrag von HaPe » Di, 07. Feb 2017 17:16

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

Organisator der XUG Stuttgart
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11417
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: PDF drucken

Beitrag von AUGE_OHR » Mi, 08. Feb 2017 3:01

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: 2081
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: PDF drucken

Beitrag von Koverhage » Mi, 08. Feb 2017 7:29

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: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: PDF drucken

Beitrag von Jan » Mi, 08. Feb 2017 8:13

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