Discussion:
PDF drucken im Hintergrund
(zu alt für eine Antwort)
Andreas Bruhn
2006-12-06 00:40:51 UTC
Permalink
Hi allerseits,

wenn ich hier unter Windows mit Acrobat Reader bei einer PDF-Datei im
Kontextmenü das "drucken" auswähle, dann wird der Acrobat Reader mit
den Optionen "/p /h" aufgerufen. Damit bleibt der Reader unsichtbar
und die Datei wird zum Drucker geschickt.

Das was ich eigentlich haben möchte ist ein Aufruf von der
Kommandozeile um eine PDF-Datei zu drucken ohne dass der Reader
sichtbar wird. Mit den obigen Optionen "/p /h" klappt das auch fast
perfekt. Das einzige was stört, ist der Reader der nach dem Druck
weiterhin aktiv bleibt und dabei teilweise dann auch die gerade
gedruckten Dateien blockiert (weil angeblich noch offen hält).

Kennt jemand eine Alternative unter Windows (Win 2000 übrigens) nur
zum ausdrucken von PDF-Dateien? Wie schon erwähnt, würde diese
Alternative dann von der Kommandozeile aufgerufen werden und sollte
deswegen auch von der Kommandozeile aus konfigurierbar sein (wechsel
auf nicht-Standard-Drucker). Wenn sich das Programm nach dem Druck
dann auch selbstständig beendet, dann wäre es perfekt.

Mit welchem Programm geht soetwas?

Tschüs,
Andreas
Stefan Lagotzki
2006-12-06 10:16:33 UTC
Permalink
Andreas Bruhn schrieb:
[...]
Post by Andreas Bruhn
Das was ich eigentlich haben möchte ist ein Aufruf von der
Kommandozeile um eine PDF-Datei zu drucken ohne dass der Reader
sichtbar wird. Mit den obigen Optionen "/p /h" klappt das auch fast
perfekt. Das einzige was stört, ist der Reader der nach dem Druck
weiterhin aktiv bleibt und dabei teilweise dann auch die gerade
gedruckten Dateien blockiert (weil angeblich noch offen hält).
Kennt jemand eine Alternative unter Windows (Win 2000 übrigens) nur
zum ausdrucken von PDF-Dateien? Wie schon erwähnt, würde diese
Alternative dann von der Kommandozeile aufgerufen werden und sollte
deswegen auch von der Kommandozeile aus konfigurierbar sein (wechsel
auf nicht-Standard-Drucker). Wenn sich das Programm nach dem Druck
dann auch selbstständig beendet, dann wäre es perfekt.
GhostScript kann das. Du kannst an gswin32c neben vielen anderen
Optionen auch den Druckernamen übergeben. Schau Dir mal die
Dokumentation zu GhostScript an. Wenn Du es aus einer Batch-Datei
aufrufst, beendet sich das CMD-(DOS)-Fenster nach dem Abarbeiten
einer Schleife über mehrere PDF-Dateien auch von selbst.

Stefan

.
Andreas Bruhn
2006-12-07 18:31:53 UTC
Permalink
Post by Stefan Lagotzki
[...]
Post by Andreas Bruhn
Das was ich eigentlich haben möchte ist ein Aufruf von der
Kommandozeile um eine PDF-Datei zu drucken ohne dass der Reader
sichtbar wird. Mit den obigen Optionen "/p /h" klappt das auch fast
perfekt. Das einzige was stört, ist der Reader der nach dem Druck
weiterhin aktiv bleibt und dabei teilweise dann auch die gerade
gedruckten Dateien blockiert (weil angeblich noch offen hält).
Kennt jemand eine Alternative unter Windows (Win 2000 übrigens) nur
zum ausdrucken von PDF-Dateien? Wie schon erwähnt, würde diese
Alternative dann von der Kommandozeile aufgerufen werden und sollte
deswegen auch von der Kommandozeile aus konfigurierbar sein (wechsel
auf nicht-Standard-Drucker). Wenn sich das Programm nach dem Druck
dann auch selbstständig beendet, dann wäre es perfekt.
GhostScript kann das. Du kannst an gswin32c neben vielen anderen
Optionen auch den Druckernamen übergeben. Schau Dir mal die
Dokumentation zu GhostScript an. Wenn Du es aus einer Batch-Datei
aufrufst, beendet sich das CMD-(DOS)-Fenster nach dem Abarbeiten
einer Schleife über mehrere PDF-Dateien auch von selbst.
So, nachdem ich dies vergangene Nacht gelesen hatte, hatte ich vorhin
Ghostscript runtergeladen, unter Win2000 installiert, die beiden
notwendigen 'Path'-Angaben eingetragen und ghostscript erfolgreich
aufgerufen (wegen Test erstmal nur zur Anzeige einer PDF-Datei).

Danach habe ich versucht mich durch die IMHO unübersichtliche Doku zu
wühlen und ghostscript dazu zu bringen eine PDF-Datei auszudrucken
(auf einem entfernten Drucker im Netzwerk, lokal an dem
Win2000-Rechner ist kein Drucker angeschlossen).

Bisher habe ich nur einige Versuche gemacht, morgen werde ich es
nochmal probieren. Aber bisher wollte er weder auf dem Standarddrucker
drucken noch auf einem anderen Drucker. Es wurde immer wieder nur die
PDF-Datei angezeigt. :-(

Kann es daran liegen, dass die zum testen benutzte Datei, laut
ghostscript, zwar mit dem Adobe Acrobat Destiller erzeugt wurde, aber
nicht der PDF-Spezifikation von Adobe entspricht. ;-/

In der Doku habe ich noch gelesen, dass ghostscript früher fehlerhafte
PDF-Dateien aus Prinzip nicht angezeigt hatte, aber heutzutage diese
Dateien soweit möglich doch anzeigt, aber zusätzlich eine Warnung
ausgibt. Steckt vielleicht in dem Druck-Code noch dieses alte "mit
fehlerhaften PDF-Dateien will ich überhaupt nichts zu tun haben" drin
und blockiert hier das drucken?

Tschüs,
Andreas
David Schumacher
2006-12-07 23:03:34 UTC
Permalink
Hi Andreas,
Post by Andreas Bruhn
Bisher habe ich nur einige Versuche gemacht, morgen werde ich es
nochmal probieren. Aber bisher wollte er weder auf dem Standarddrucker
drucken noch auf einem anderen Drucker. Es wurde immer wieder nur die
PDF-Datei angezeigt. :-(
Mit diesem Befehl hier bekomme ich einen Druckdialog und dann wird auch
ausgedruckt:
gswin32c -sDEVICE=mswinpr2 -dBATCH -dNOPAUSE datei.pdf

Hier stehen die Parameter um den Drucker direkt anzuspechen:
http://www.cs.wisc.edu/~ghost/doc/AFPL/8.00/Devices.htm#Win
Post by Andreas Bruhn
Kann es daran liegen, dass die zum testen benutzte Datei, laut
ghostscript, zwar mit dem Adobe Acrobat Destiller erzeugt wurde, aber
nicht der PDF-Spezifikation von Adobe entspricht. ;-/
Ich habe Ghostscript/ghostview bisher als recht robust und fehlertolerant
erlebt. Kannst du deine Datei mit GSView ansehen? Gibt es dort
Fehlermeldungen (File->Show Messages)?
Post by Andreas Bruhn
In der Doku habe ich noch gelesen, dass ghostscript früher fehlerhafte
PDF-Dateien aus Prinzip nicht angezeigt hatte, aber heutzutage diese
Dateien soweit möglich doch anzeigt, aber zusätzlich eine Warnung
ausgibt. Steckt vielleicht in dem Druck-Code noch dieses alte "mit
fehlerhaften PDF-Dateien will ich überhaupt nichts zu tun haben" drin
und blockiert hier das drucken?
Es gibt im Prinzip keine Unterschied zwischen "Druck" und "Anzeige".
Sonst probier mal eine andere Datei.

David
--
Ignoramus, ignorabimus (Emil du Bois-Reymond)
Stefan Lagotzki
2006-12-08 14:34:40 UTC
Permalink
Post by David Schumacher
http://www.cs.wisc.edu/~ghost/doc/AFPL/8.00/Devices.htm#Win
Kann sein, dass diese Dokumentation schon etwas älter ist
und dass heute schon mehr Möglichkeiten gegeben sind.

Ergänzung zu Davids Posting: Man kann sich den Aufruf auch
in eine Batchdatei legen, diese auf dem Desktop verknüpfen
und die zu druckende Datei einfach daraufziehen. Alles weitere
geschieht im Hintergrund (abhängig von den cmd-Optionen).

Man kann übrigens auch Drucker benennen (es muss nicht der
Standarddrucker verwendet werden).

Stefan

.
Andreas Bruhn
2007-01-02 23:05:21 UTC
Permalink
Ein frohes neues Jahr allen Lesern hier und besondern allen hier im
Thread!


Am Fri, 08 Dec 2006 15:34:40 +0100 schrieb Stefan Lagotzki:

[...]
Post by Stefan Lagotzki
Man kann übrigens auch Drucker benennen (es muss nicht der
Standarddrucker verwendet werden).
Dass es eigentlich schon geklappt hatte und das Drucken funktionierte
(mit Angabe des Namens des gewünschten Druckers) hatte ich ja schon
geschrieben, aber nun muss hier doch noch eine Frage loswerden:

Ohne den Drucker zu benennen geht es nicht :-( bzw. wir können den
Standarddrucker nicht verwenden.

Das ganze soll ja komplett im Hintergund ablaufen, ohne das irgendein
Dialog sichtbar wird und ohne das jemand noch mit Maus oder Tastatur
aktiv werden muss. Aber wenn ich keinen Drucker-Namen vorgebe, dann
kam bei den heutigen Versuchen immer der Druckerauswahldialog zum
Vorschein. :-(

Ich bin jetzt kurz davor mir per VB-Script den aktuellen Namen des
Default-Druckers zu holen und dann mit einem zur Laufzeit angepassten
Aufruf den Ghostscript-Druck zu starten.
Anders scheint es nicht zu funktionieren. So verstehe ich jedenfalls
auch die Doku: Wenn als Ausgabefile nicht als "%printer%ein echter
Druckername" ein vorhandener Druckername übergeben wird, dann
erscheint immer der Druckerdialog.

Oder kenne ich nur den Defaultnamen für den Standarddrucker nicht?
"%printer%defaultprinter" hat z.B. nicht funktionert: es erschien
wieder der Druckerdialog. :-( Ganz ohne Namen "%printer%" war auch
nicht erfolgreich.

Tschüs,
Andreas
Andreas Bruhn
2007-01-05 17:52:06 UTC
Permalink
Moin moin allerseits!
Post by Andreas Bruhn
Ein frohes neues Jahr allen Lesern hier und besondern allen hier im
Thread!
[...]
Post by Stefan Lagotzki
Man kann übrigens auch Drucker benennen (es muss nicht der
Standarddrucker verwendet werden).
[...]
Post by Andreas Bruhn
Das ganze soll ja komplett im Hintergund ablaufen, ohne das irgendein
Dialog sichtbar wird und ohne das jemand noch mit Maus oder Tastatur
aktiv werden muss. Aber wenn ich keinen Drucker-Namen vorgebe, dann
kam bei den heutigen Versuchen immer der Druckerauswahldialog zum
Vorschein. :-(
nur für's Protokoll. Mit dem folgenden VBScript (z.b. mit dem Namen
'druckpdf.vbs') funktioniert es wie gewünscht! :-) Getestet unter
Win2000.

Das Script liegt dabei oberhalb vom Ghostscript-Verzeichnis
('gs8.54') und im gleichen Verzeichnis liegt auch die Datei
('scan_1.pdf') die auf dem Standarddrucker ausgedruckt werden soll.

Es kommen keine Dialoge, Druckerdialoge, Fenster oder sonstige
Ablenkungen, nur der Standarddrucker fängt einfach nur an zu rappeln
und spuckt einen Ausdruck aus...


| Option Explicit
| Dim DefaultPrinterName
| Dim key
| Dim WshShell
| Dim Befehl
| dim filename
|
| DefaultPrinterName = ""
| set WshShell = CreateObject("WScript.shell")
|
| On Error Resume Next
| key = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
| DefaultPrintername = LCase(WshShell.RegRead (key))
| If Err.Number <> 0 Then
| DefaultPrinterName = ""
| else
| if instr(Defaultprintername, ",") >= 1 then
| DefaultPrintername = Left(Defaultprintername, _
| instr(Defaultprintername, ",")-1)
| else
| DefaultPrinterName = ""
| end if
| end if
|
| filename = "scan_1.pdf"
| Befehl = ".\gs8.54\bin\gswin32c.exe -sDEVICE=mswinpr2 -o ""%printer%" _
| & Defaultprintername & """ -sPAPERSIZE=a4 -dNoCancel " & filename
|
| wshShell.Run Befehl, 0, true

Andreas Bruhn
2006-12-12 00:32:40 UTC
Permalink
Hi allerseits,
Post by David Schumacher
Hi Andreas,
Post by Andreas Bruhn
Bisher habe ich nur einige Versuche gemacht, morgen werde ich es
nochmal probieren. Aber bisher wollte er weder auf dem Standarddrucker
drucken noch auf einem anderen Drucker. Es wurde immer wieder nur die
PDF-Datei angezeigt. :-(
Mit diesem Befehl hier bekomme ich einen Druckdialog und dann wird auch
gswin32c -sDEVICE=mswinpr2 -dBATCH -dNOPAUSE datei.pdf
wie schon geschrieben hatte ich auf die Schnelle nur kurz ein paar
Versuche gemacht. Dabei hatte ich, in der Hoffnung "wenn die
Install-Datei für Windows ist, dann ist der Windows-Drucker auch schon
voreingestellt", die Doku zum 'Drucken unter Windows' nur bis zur
erstbesten Kommandozeile überflogen.
Post by David Schumacher
http://www.cs.wisc.edu/~ghost/doc/AFPL/8.00/Devices.htm#Win
Den Hinweis auf mswinpr2 im zweiten Absatz hatte ich dabei übersehen.
Aber nun hat 'es' gedruckt :-) und demnächst startet dann der Versuch
bei dem dann ein anderes Programm die Kommandozeile erstellen und
ausführen lassen darf.

Besten Dank an alle für die Hilfe, Tschüs (und schon mal frohes Fest
und guten Rutsch)!

Andreas

[für dieses Jahr sind jetzt die Probleme hoffentlich alle beseitigt]
Andreas Bruhn
2006-12-08 19:11:17 UTC
Permalink
Post by Andreas Bruhn
Bisher habe ich nur einige Versuche gemacht, morgen werde ich es
nochmal probieren.
Falls zur Zeit irgendwer aktuelle Erkenntnisse meinerseits erwartet:
Der heutige Tag war mit Access, Caché und M vollkommen ausgelastet.
Also werde ich mich erst irgendwann in der nächsten Woche wieder um
Ghostscript auf Win2000 kümmern.

Ciao,
Andreas

PS. Ich lese natürlich weiterhin und täglich hier mit und notiere mir
alle reinkommenden Informationen.
Andreas Bruhn
2006-12-07 00:35:30 UTC
Permalink
Hi allerseits!

Andreas Bruhn wrote:

[...]
Post by Andreas Bruhn
Kennt jemand eine Alternative unter Windows (Win 2000 übrigens) nur
zum ausdrucken von PDF-Dateien? Wie schon erwähnt, würde diese
Alternative dann von der Kommandozeile aufgerufen werden und sollte
deswegen auch von der Kommandozeile aus konfigurierbar sein (wechsel
auf nicht-Standard-Drucker). Wenn sich das Programm nach dem Druck
dann auch selbstständig beendet, dann wäre es perfekt.
Mit welchem Programm geht soetwas?
Als ich das vorherige Posting abgeschickt hatte, da hatte ich bei der
Gelegenheit gleich bei Foxit reingeschaut und dort in der FAQ den Hinweis
gefunden, dass Foxit die Funktion früher mal hatte, dann wurde sie aus
irgendwelchen Gründen wieder ausgebaut und wird irgendwann in der Zukunft
wieder eingebaut.

Auch in der Doku zum Foxit Reader 2 habe ich keine Hinweise auf interessante
Kommandozeilen-Optionen zum Drucken finden können.

Also ist Foxit anscheinend erstmal auf unbestimmte Zeit hier für nicht
interessant.

Also, wer kennt noch Alternativen unter Win2000? Und welche?

Tschüs,
Andreas
Christoph Bier
2006-12-07 10:02:40 UTC
Permalink
Andreas Bruhn schrieb am 07.12.2006 01:35:

[...]
Post by Andreas Bruhn
Also, wer kennt noch Alternativen unter Win2000? Und welche?
Was gefällt dir an Stefans Antwort nicht?

Grüße,
Christoph
--
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)
Loading...