![]() |
PDF an beliebigen Drucker schicken
Hallo zusammen,
ich weiß, dieses Thema wurde bestimmt schon x-mal durchgekaut, aber ich habe mich die letzten 2 Tage durch etliche Foren, Anbieter, Componentenverwaltungen, etc. durchgewühlt, aber keine passende Lösung gefunden. Zu meinem Problem: Ich habe eine bestehende PDF Datei und möchte diese ohne Dialoge oder sonstiges an einem ausgewählten Drucker drucken. Habe bereits bestimmt 10 VCL Komponenten probiert, die alle lieferten aber nicht das gewünschte Ergebnis. Es muss doch eine Möglichkeit geben ein bestehendes PDF File zu öffnen (ohne Anzeige, Vorschau oder so) und dann an einen von den im System registrierten Drucker auszudrucken??? Alle Komponenten bieten die Möglichkeit von Konvertierung & co, aber das brauche ich nicht. Ich will lediglich ein PDF Dokument an einen von mir gewählten Drucker (nicht Standarddrucker) schicken. Ich weiß nicht, ob es eine Möglichkeit gibt das PDF File zu öffnen und an das Canvas des Druckers zu schicken, wie man das sonst mit Bilddateien machen würde. Ich hoffe ihr habt irgendeine passende Lösung für mich.....ich verzweifle hier nämlich schon. :wall: Danke & Gruß, Moony |
Re: PDF an beliebigen Drucker schicken
Man könnte es mit Report-Engines lösen
|
Re: PDF an beliebigen Drucker schicken
Kenne ich nicht. Wie funktioniert das?
|
Re: PDF an beliebigen Drucker schicken
Rave, QuickReports, FreeReports/FastReports, ...
Welche Delphi-Version? |
Re: PDF an beliebigen Drucker schicken
Zitat:
|
Re: PDF an beliebigen Drucker schicken
Jeder Acrobat Reader bringt ne DLL mit, die man in Delphi benutzen kann. Damit kann man die Datei öffnen und drucken. Wenn ich nicht irre dann auch ohne Dialoge. Könnte aber sein, dass dann immer auf dem Windows-Standarddrucker gedruckt wird. Ist schon ne Weile her, dass ich das probiert habe.
|
Re: PDF an beliebigen Drucker schicken
Wie heißt denn die DLL und gibt es eine Dokumentation zu dieser über Deklarationen und co?
Ich verwende Delphi 7 & 2009. Aber da hat Bernhard glaube ich Recht, ich möchte nur ein PDF einlesen und Drucken. |
Re: PDF an beliebigen Drucker schicken
Hallo,
schau mal bitte, ob Dir das da weiter hilft: ![]() |
Re: PDF an beliebigen Drucker schicken
Das Ding schhimpft sich bei mir im Dialog "Komponente importieren" "Adobe Acrobat 8.0 Type Library" und liegt im Verzeichnis des Readers (AcroRd32.dll).
Mein Code schaut so aus:
Delphi-Quellcode:
Wie im Kommentar steht kein FreeAndNil machen. Dann hat er zumindest bei mir nicht gedruckt. Wenn der Parent auf visible = false steht, dann sieht man auch nix.pdf := TAcroPDF.Create(self); pdf.Parent := parentPanel; // Parent setzen nicht vergessen pdf.Align := alClient; result := true; try pdf.src := zuDruckendeDatei; // Hier die Datei rein pdf.printAll; except result := false; //freeAndNil(pdf); Wenn man das Objekt freigibt wird nicht gedruckt?! end; |
Re: PDF an beliebigen Drucker schicken
@nahpets: Diese Möglichkeit funktioniert schon mal, aber das PDF wird zusätzlich geöffnet und das will ich nicht. Also muss der Druck noch stillschweigend abgewickelt werden.
@mquadrat: Ich habe die Acrobat Komponente importiert, aber ich habe nirgends die Möglichkeit ein AcroPDF zu erstellen. Muss ich noch was beachten oder sonstiges? |
Re: PDF an beliebigen Drucker schicken
Acrobat Reader - per Kommandozeile
![]() Zitat:
Cheers, |
Re: PDF an beliebigen Drucker schicken
Wie ist das denn mit der Activex Komponente von Adobe? Habe die eingebunden, aber da fruchtete das auch nciht wirklich. Er sagt mir die Klasse wäre ncht registriert.
|
Re: PDF an beliebigen Drucker schicken
Zitat:
|
Re: PDF an beliebigen Drucker schicken
Das heißt damit komme ich wohl auch nicht weiter...
Aber es muss doch eine Möglichkeit geben, dass ich PDF Dateien stillschweigend an einen Drucker schicken kann. Meinerwegen kann diese Komponente auch was kosten. |
Re: PDF an beliebigen Drucker schicken
Du könntest dir mal das
![]() |
Re: PDF an beliebigen Drucker schicken
Ja, die Komponente habe ich auch schon gesehen, aber ich finde das ein wenig teuer auch noch nur fürs Drucken die ProPlus Lizenz nehmen zu müssen.
|
Re: PDF an beliebigen Drucker schicken
Hallo,
habe da mal eine etwas abgefahrene Idee, die noch aus DOS-Zeiten stammt. Wie ist der von Dir zu benutzende Drucker konfiguriert? Wenn Du mal unter Drucker in die Eigenschaften schaust und dort unter Anschlüsse? Wie ist der zu verwendende Drucker dort aufgeführt? Links steht die Spalte Anschluss, ist dort etwas markiert, z. B. LPT1: ... Dann könnte folgendes funktionieren:
Code:
Das läßt sich auch in ein ShellExecute packen.
copy pdfdateiname.pdf lpt1:
Mit dieser Methode kann ich bei uns zumindest PDF-Dateien auf unserem PDF-Drucker ausgeben (die Sinnhaftigkeit wollen wir hier nicht hinterfragen).
Code:
Eventuell kannst Du damit ja was anfangen und daraus eine einfache Lösung bauen.
copy pdfdateiname.pdf \\pdfdruckerserver\PDFCreator:
|
Re: PDF an beliebigen Drucker schicken
Ja, das stimmt, das kenne ich auch. Aber leider weißich 1. nicht von Software Seite aus welche Schnittstelle der Drucker besitzt. Das müsste ich dann anhand des Druckernamens aus dem System ermitteln und 2. wird das zu größter Wahrscheinlichkeit ein USB Drucker sein.
Gibt es denn nicht eine Komponente mit der ich ein PDF einlesen, wie eine Bilddatei und anschließend diesen Inhalt auf das Druckercanvas schicken kann. Es kann doch nicht sein, dass ich nur zum Drucken eines PDF ohne Adobe entweder die Datei mit ShellExecute zusätzlich geöffnet wird oder ich 500€ für eine Komponente zahlen muss, nur damit ich stillschweigend ein Dokument drucken kann.... :wall: |
Re: PDF an beliebigen Drucker schicken
Hallo,
hilft Dir das weiter ? ![]() Zitat:
|
Re: PDF an beliebigen Drucker schicken
Danke, das habe ich auch schon gemacht, aber leider wird durch das Kommando SW_HIDE das PDF Dokument trotzdem mit dem Reader geöffnet und gedruckt. Dass es gedruckt wird ist das einzige was ich brauche. Hier stört das Öffnen des Pdf's. Und wenn es dafür eine Lösung gibt, bin ich voll und ganz glücklich.
|
Re: PDF an beliebigen Drucker schicken
Eventuell hilft der Foxit Reader, mit ihm kann man per Batch ein PDF drucken, ohne dass ein Fenster aufgeht :
foxit Reader.exe /p meinpdf.pdf --> Drucken mit Standard Drucker foxit Reader.exe /t meinpdf.pdf MeinDrucker --> Drucken mit bestimmten Drucker Gruß Chrischn |
Re: PDF an beliebigen Drucker schicken
Ein einfaches ShellExecute mit print sollte eigentlich auch funktionieren
|
Re: PDF an beliebigen Drucker schicken
Zitat:
![]() Diese ist mein Favorit, falls Acrobat mal an seine Grenzen stößt oder seine "undokumentierte" Druckfunktion nicht mehr verwendet werden kann. |
Re: PDF an beliebigen Drucker schicken
Zitat:
was genau verstehst du unter "Öffnen"? Es gibt mit absoluter Sicherheit kein Programm, das eine PDF-Datei drucken kann, ohne die Datei zu öffnen. Mit Ghostscript lässt sich das sicher mit einem (verborgenen) Script erledigen. Gruss Reinhard |
Re: PDF an beliebigen Drucker schicken
Den gewünschten Drucker vorübergehend zum Standarddrucker zu machen sollte doch möglich sein.
Und dann...
Delphi-Quellcode:
You can display and print a PDF file using command lines with Acrobat and Acrobat Reader.
uses ShellAPI;
procedure PrintPDF(Filename: WideString); begin ShellExecuteW(0, 'open', 'acrord32', PWideChar('/p /h ' + Filename), nil, SW_HIDE); end; procedure TForm1.PrintPDF1Click(Sender: TObject); begin PrintPDF('test.pdf'); end; AcroRd32.exe filename - Executes the Reader and displays a file. Other options for the command line are: AcroRd32.exe /p filename - Executes the Reader and prints a file. AcroRd32.exe /t path printername drivername portname - Initiates Acrobat Reader, prints a file while suppressing the Acrobat print dialog box, then terminates Reader. The four parameters of the /t option evaluate to path, printername, drivername, and portname (all strings). printername - The name of your printer. drivername - Your printer driver's name. Whatever appears in the Driver Used box when you view your printer's properties. portname - The printer's port. portname cannot contain any "/" characters; if it does, output is routed to the default port for that printer. If using Acrobat, substitute Acrobat.exe in place of AcroRd32.exe in the command lines. option meaning: /n Launch a separate instance of the Acrobat application, even if one is currently open. /s Open Acrobat, suppressing the splash screen. /o Open Acrobat, suppressing the open file dialog. /h Open Acrobat in hidden mode. |
Re: PDF an beliebigen Drucker schicken
Zitat:
vielleicht verhalten sich neuere Version vom Acrobat reader anders. Mit "Öffnen" meint er, das der Acrobat reader sich trotz "Hide" etc. öffnet. Ich hatte wollte mit dem Acrobat Reader7/8 auch PDFs auf einem bestimmten Drucker mit wählbarer Kopieanzahl ausgeben. Letztenendes bin ich bei ![]() Gruß Frank |
AW: PDF an beliebigen Drucker schicken
Hänge gerade auch am selben Problem. Möchte ein bereits vorhandenes pdf ausdrucken ohne dass ein Acobat oder sonstiges Fenster aufgeht.
Es kann auch gerne eine Komponente sein doch da ich zunächst nur drucken möchte sind Komponenten wie PDFtoolkit und WPViewPDF zu teuer. |
AW: PDF an beliebigen Drucker schicken
Man könnte auch versuchen, das mit Hilfe von OLE zu lösen.
Ich muß allerdings sagen, daß ich meine Versuche OLE einzusetzen wg. fehlender bzw. unbrauchbarer Doku eingestellt hatte. Gruß K-H |
AW: PDF an beliebigen Drucker schicken
Ich nutze dazu QuickPDF (ca. 250 $)
![]() Gruß Hartmut |
AW: PDF an beliebigen Drucker schicken
Danke hab mir jetzt weitergeholfen indem ich nach dem Druck das Acrobat Fenster selbst schliesse. Ist viel nicht die feine Art aber es tuts :)
QuickPDF merk ich mir aber mal weil der Preis im Vergleich zu den anderen Komponenten ganz ok ist. |
AW: PDF an beliebigen Drucker schicken
Nur, um noch meinen "Senf" dazuzugeben und weil ich im Moment das gleiche Problem hatte ;-)
Delphi-Quellcode:
iFehlerCode := ShellExecute(Handle,'print', Dokument,'', Pfad, SW_HIDE);
|
AW: PDF an beliebigen Drucker schicken
Leider wird hier aber kein bestimmter Drucker mitgegeben.
|
AW: PDF an beliebigen Drucker schicken
Und um die Liste komplett zu machen
![]() Funktioniert wirklich gut, hat aber zwei Nachteile
|
AW: PDF an beliebigen Drucker schicken
Ein andere Möglichkeit wäre die PDF Datei über Ghostscript in eine BMP Datei mit einer höheren Auflösung umwandeln zu lassen. Ist aber nur eine Idee, habe es selber noch nie probiert.
Lg, jus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz