chicky0815
Goto Top

.jpg oder .tif über CMD drucken

Hallo Zusammen

Wir arbeiten hier mit einem Viewer für eine Unix Umgebung, mit der die Buchhaltung arbeitet. Jetzt sollen Images, die eingescannt sind und auf einem Netzwerkverzeichnis liegen automatisch gedruckt werden, wenn ein bestimmter Unixjob gestartet wird.

Das Problem ist, das mir bisher keine Lösung eingefallen ist, wie ich die Bilder (.tif oder .jpg) drucken kann, ohne diese mit einem Anzeigeprogram vorher über die Eingabeaufforderung aus Unix heraus zu öffnen.

Daher kam mir die Idee, das man vlt. den Druckauftrag für das Image manuell erstellen kann oder das man vlt über ein Parameter der Bild und Faxanzeige von Windows übergibt, das diese das Bild direkt Drucken soll und nicht anzeigen soll. Vlt gibts für so ein Problem auch andere Lösungen.

Hinzu kommt noch, das die Drucker bis auf wenige Ausnahmen alle als Netzwerkdrucker installiert sind.

Wäre für alle Ideen dankbar.

Gruß
Christoph

Content-ID: 172575

Url: https://administrator.de/contentid/172575

Ausgedruckt am: 19.11.2024 um 19:11 Uhr

60730
60730 05.09.2011 um 11:54:17 Uhr
Goto Top
Servus,

Kannst du das nochmal genauer definieren?

  • Interaktion zwischen Unix/Windows?

das ist etwas problematisch - denn diese Windows Boardmittel taugen nicht wirklich dazu.

mspaint z.B druckt dir die Bilder gestückelt auf 2 oder mehrere Seiten.
mspaint -p laufwerk:\pfad\bild.tif
Und diese Faxanzeige ist nix anderes, als mspaint.

Hinzu kommt noch, das die Drucker bis auf wenige Ausnahmen alle als Netzwerkdrucker installiert sind.

Hmm das ist doch genau richtig?


gruß
Chicky0815
Chicky0815 05.09.2011 um 12:05:57 Uhr
Goto Top
Also die Interaktion Win/Unix läuft primär über einen Viewer also eine Terminalemulation wo sich die Leute anmelden und dann ein Unixprogramm starten können und damit dann arbeiten.

Über die Shell habe ich bisher für das Anzeigen immer die CMD gestartet und ihr dann den Pfad zur Datei übergeben und dann wurde das Bild mit dem entsprechenden Standardprogramm geöffnet.

Jetzt würde ich gerne über die CMD das Bild nicht anzeigen, sondern direkt drucken. Hab grad auch was gefunden:
rundll32 shimgvw.dll ImageView_PrintTo /pt xxx.png "printer name"

Das sagt mir allerdings nichts und klappt auch bei mir nicht.
64748
64748 05.09.2011 um 12:06:47 Uhr
Goto Top
Hallo Christoph,

geht es nicht einfach mit dem lpr Kommando? vielleicht hilft Dir die Manpage zu lpr.

Und falls die Fomate nicht passen (Größe/Ausrichtung), dann schau Dir mal imagemagick an, da kannst Du (automatisch) via Shellscript die Bilder anpassen.

Gruß

Markus
64748
64748 05.09.2011 um 12:10:35 Uhr
Goto Top
Jetzt würde ich gerne über die CMD das Bild nicht anzeigen, sondern direkt drucken. Hab grad auch was gefunden:
rundll32 shimgvw.dll ImageView_PrintTo /pt xxx.png "printer name"
... ach so, von Windows aus, dann habe ich das falsch verstanden...

Markus
60730
60730 05.09.2011 um 12:17:34 Uhr
Goto Top
?

rundll32 shimgvw.dll ImageView_PrintTo /pt xxx.png "printer name"

Stimmt ist auch ein Weg - der aber wunderbar funktioniert - sogar besser, als die von mir genannte Krücke - denn der macht pro Bild eine Seite.

Was passiert denn bei dir?

Und machst du das sinngemäß so:

rundll32 shimgvw.dll ImageView_PrintTo /pt laufwerk:\pfad\xxx.png \\printserver\druckerfreigabe

Gruß
Chicky0815
Chicky0815 05.09.2011 um 12:24:13 Uhr
Goto Top
Zitat von @60730:
?

> rundll32 shimgvw.dll ImageView_PrintTo /pt xxx.png "printer name"

Stimmt ist auch ein Weg - der aber wunderbar funktioniert - sogar besser, als die von mir genannte Krücke - denn der macht
pro Bild eine Seite.

Was passiert denn bei dir?

Und machst du das sinngemäß so:

>> rundll32 shimgvw.dll ImageView_PrintTo /pt laufwerk:\pfad\xxx.png \\printserver\druckerfreigabe

Gruß

Also eignetlich macht er gar nix. Kein Fehler und es kommt einfach kein Druck ^^
60730
60730 05.09.2011 um 12:30:38 Uhr
Goto Top
Zitat von @Chicky0815:
Also eignetlich macht er gar nix. Kein Fehler und es kommt einfach kein Druck ^^

  • ok dann druck ich mich mal anders aus.
Bei meinem System - XP SP3 funktioniert der Weg und im Druckspool kann ich das sehen.

Da das bei dir nicht funktioniert bin ich überfragt und mutmasse nicht, wo denn der Fehler zu suchen ist.

Gruß
Chicky0815
Chicky0815 05.09.2011 um 12:34:28 Uhr
Goto Top
So, also nun klappts.

rundll32.exe shimgvw.dll ImageView_PrintTo /pt "c:\logo.jpg" "Kyocera FS-1118MFP" "NULL" "NULL"

Das Bild wird gedruckt allerdings falsch skaliert. Der Drucker ist nun auch lokal bei mir angeschlossen. Wie bekomme ich das da skaliert? Auch mit imagemagick?

Edit: Seh grad imagemagick ist ja ne extra software. Also ist das schonmal nicht so gut. Besser wäre eine Lösung ohne zusatzsoftware.
64748
64748 05.09.2011 um 12:42:57 Uhr
Goto Top
Imagemagick gibt's auch für Windows, es ist sehr leistungsfähig, die Installation lohnt sich, Infos gibt's hier http://www.imagemagick.org/script/index.php

Markus
Chicky0815
Chicky0815 05.09.2011 um 12:46:43 Uhr
Goto Top
Zitat von @64748:
Imagemagick gibt's auch für Windows, es ist sehr leistungsfähig, die Installation lohnt sich, Infos gibt's
hier http://www.imagemagick.org/script/index.php

Markus
Ja, ich hab mir das grad auch schon durchgelesen. Leider ist das hier nicht gewünscht und soll nach möglichkeit ohne neue Software gehen.
Chicky0815
Chicky0815 05.09.2011 um 13:01:42 Uhr
Goto Top
So, also offensichtlich war die Skalierung noch nicht falsch. Mit folgendem CMD aufruf gehts:

rundll32.exe shimgvw.dll ImageView_PrintTo /pt "c:\logo.jpg" "Druckername" "NULL" "NULL"
Chicky0815
Chicky0815 06.09.2011 um 08:18:13 Uhr
Goto Top
Also ich bräuchte doch nochmal eure Hilfe. Wenn ich nämlich die Konsole von der Unix Shell aufrufen will und o.g. Statement ausführen will, passiert leider nix. Unter Unix siehts folgendermaßen aus:

echo "\033\033X\"cmd /C rundll32.exe shimgvw.dll ImageView_PrintTo /pt "Dateipfad" "Kyocera FS-1118MFP"""

Wenn ich das so ausführer wird mir eine neue Zeile auf der Shell geöffnet mit

">"

Jemand eine Idee? Hat jetzt zwar nicht mehr so viel mit Win zu tun, wollte aber keinen neuen Thread deswegen machen
64748
64748 06.09.2011 um 08:37:28 Uhr
Goto Top
Guten Morgen,

kannst Du mir bitte mal das Kommando in allen Einzelheiten erklären?

Du kannst " nicht schachteln, also der Teil
cmd /C rundll32.exe shimgvw.dll ImageView_PrintTo /pt 
steht "blank" da und darum werden die / als Teil der Pfades interpretiert.

Außerdem hast Du 7 mal ", da fehlt mit Sicherheit ein ". Außerdem versteh ich nicht, was der Unix-Rechner mit den Windowskommandos machen soll.

Ach so, bitte poste mal genauere Angaben zu Betriebssystem und Shell, also welches Unix und welche Shell?

Die neue Zeile mit dem ">" bedeutet, dass die Shell auf den restlichen Teil des Kommandos wartet.

Markus
Chicky0815
Chicky0815 07.09.2011 um 06:49:12 Uhr
Goto Top
Guten Morgen Markus,

also das Kommando ist eigenltich recht simpel. Es soll lediglich die Win cmd starten und dann das Image drucken.

Unix ist Debian und Shell ist die Korn Shell. Anführungszeichen habe ich übrigens 8 gezählt.
64748
64748 07.09.2011 um 07:09:22 Uhr
Goto Top
Guten Morgen,

also, die Win cmd läuft aber nicht auf einem Debian-Rechner, daher verstehe ich das genaue Vorgehen nicht.

Das Kommando um eine Datei an den Drucker zu schicken lautet unter Unix/Linux
lpr -P Druckername Dateiname

Wegen der Anführungszeichen: also sind's am Ende der Zeile 3 Stück, das hab ich übersehen. Laut Manpage kannst Du in der Kornshell mit \ die " quoten, also alle bis auf die beiden äußeren " müssten durch \" ersetzt werden. Lies mal in der Manpage im Abschnitt "quoting".
man ksh
Suche starten mit
/quoting
und N für weitersuchen.

Aber schachteln von Anführungszeichen, so wie Du es gemacht hast, das geht nicht.

Markus
Chicky0815
Chicky0815 07.09.2011 um 07:23:47 Uhr
Goto Top
Morgen,

also das starten der CMD läuft auch nicht direkt über Unix sondern wird eigentlich von der Terminalemulation gemacht. Mit dem quoting schau ich mir mal und und werde bereichten.

Edit:

Ich hab es jetzt mit quoting versucht, leider auch ohne Erfolg.

echo "\033\033X\"cmd /C rundll32.exe shimgvw.dll ImageView_PrintTo /pt \"\\RZH-ARCHIV\RZH-Archivierung\Heilmittel\201108\23\016\0048\00000005F.jpg\"\"Kyocera FS-1118MFP\"""
64748
64748 07.09.2011 um 12:10:50 Uhr
Goto Top
Naja, hinten müsste dann konsequenterweise:
\"\""
stehen. Außerdem (wenn ich's richtig verstanden habe) müsstest Du die \ in der Windowspfadangabe auch quoten, also \\

echo "\033\033X\"cmd /C rundll32.exe shimgvw.dll ImageView_PrintTo /pt \"\\RZH-ARCHIV\\RZH-Archivierung\\Heilmittel\\201108\\23\\016\\0048\\00000005F.jpg\" \"Kyocera FS-1118MFP\"\""

Markus