PDF automatisch downloaden und drucken (HTML-Server)

DavieDave

Ensign
Registriert
Mai 2013
Beiträge
129
Hallo,

Wie schon oben steht habe ich folgendes Problem:

Automatisch vom HTML Server herunterladen und Drucken.

Es kommt immer mal wieder ein PDF in den Ordner auf dem HTML-Server. Dieses soll dann möglichst direkt gedruckt werden. Das ganze ist eine Anwendungsautomatisierung. D.h. mehrere PDF zusammen ausdrucken macht keinen Sinn, da für jeden Auftrag der reinkommt direkt ein Lieferschein erstellt wird und der dann gedruckt werden soll. Das ganze ist über HTML ausgelagert da das ganze über einen Server mit Remote-Controll läuft. D.h. auf dem Server wird der Schein erstellt, in der Filiale irgendwo anders wird gedruckt.
Sachen wie VPN, DynDns, Netzwerkdruck gibt die Bandbreite leider nicht her.

Meine Lösungsvorschlag wäre ein Script, dass alle 5 Sekunden checkt ob neue PDF´s angekommen sind, die dann öffnet und automatisch druckt.

Ob es dazu ein Programm gibt oder man das ganze Scripten muss ist halt die Frage, finde leider so direkt keine gute Lösung, bin aber leider auch kein Programmierer (wobei ich ja lernfähig bin ).

Bin offen und glücklich über Vorschläge.

EDIT: Falls ich mich irgendwo reinlesen soll, könnt ihr mir das auch einfach sagen ;) ich brauche nur einen ungefähren Anhaltspunkt.

EDIT2: mittlerweile bleibt mir nichts anderes übrig als Scriptsprachen zu lernen und es selbst mal zu versuchen. Naja Freizeit ade^^ Mal sehen wie es läuft.
 
Zuletzt bearbeitet:
meine Idee dazu:


Variante 1:
1) HTTP Ordner via WebDAV als Laufwerk einbinden.
2) mittels PDFCreator kann man einen Ordner überwachen lassen und alle Inhalte automatisch von dort drucken und danach löschen (oder auch in einen "erledigt" Ordner verschieben) lassen.

ad 1) sollte zumindest theoretisch gehn
ad 2) hab ich früher gemacht und funktioniert wunderbar. Wenns mal spinnt dann PC durchstarten und dann gehts wieder - läuft aber fast durchgehend ohne Probleme


Variante 2:
1) HTTP Ordner via WebDAV als Laufwerk einbinden.
2) über cmd-Script: type X:\some.pdf > LPT1
damit kannst du sofern der Drucker PDFs versteht (und es keine komplexen PDFs sind) PDFs direkt drucken.

schöne Grüße
Alex
 
Wow,

Danke für die Antwort, dachte schon ich muss alles irgendwie scripten :D

den Http ordner direkt will ich eigentlich ungern automatisch bearbeiten lassen, aber das ist ja kein Problem. Vielleicht werde ich einfach automatisch neue Pdf´s herunterladen lassen in einen Ordner lokal. Der wird dann überwacht.

Jetzt zu meiner Kernfrage, ich suche die ganze Zeit die Überwachungseinstellung oder Funktion bei PDF-Creator, kann diese aber leider nicht finden. Oder muss ich da mit Ghostscript ran?

Kannst du mir vielleicht ungefähr sagen wo sich die evtl. Funktion befindet :)

PS: Habe auch mittlerweile ein Script gefunden für AutoIt. Bei dem schaut er ins Verzeichnis, schiebt pdf´s in einen ArchivOrdner und druckt diese dabei. Falls es jmd zu dem Thema interessiert hier der Link: http://www.autoit.de/index.php?page=Thread&threadID=15390

PS2: automatisch herunterladen ist auch wieder so eine Sache ^^ aber ich schaue mal was ich finde.
Ergänzung ()

*Push ^^

komme leider nicht weiter.
 
Zuletzt bearbeitet:
DavieDave schrieb:
Danke für die Antwort, dachte schon ich muss alles irgendwie scripten :D
ohne dem wirds ziemlich sicher nciht gehn....
Automatisierung von Abläufen hat fast immer mit Programmierung bzw Scripting zu tun.

DavieDave schrieb:
den Http ordner direkt will ich eigentlich ungern automatisch bearbeiten lassen, aber das ist ja kein Problem. Vielleicht werde ich einfach automatisch neue Pdf´s herunterladen lassen in einen Ordner lokal. Der wird dann überwacht.
das musst du selbst wissen - was stört dich an einer automatischen Abarbeitung des HTTP Ordners? solange du den Ordner kontrollierst kann doch nix schief gehn oder?

DavieDave schrieb:
Jetzt zu meiner Kernfrage, ich suche die ganze Zeit die Überwachungseinstellung oder Funktion bei PDF-Creator, kann diese aber leider nicht finden. Oder muss ich da mit Ghostscript ran?
ok da hab ich mich geirrt. hab mir das angesehn wie ich das damals gelöst hab - im Endeffekt hab ich auch ein (selbstgeschriebenes) Tool wie AutoIt (nur war meins viel komplizierter) genutzt um alle Dokumente automatisch drucken zu lassen und danach in einen "Archiv" Ordner verschoben.

DavieDave schrieb:
Ergänzung ()

*Push ^^

komme leider nicht weiter.
stress?
 

schon.ja :D

Ist nicht so einfach, weil ich das nebenher mir selbst beibringen muss wie man scriptet, was was bedeutet und wie ich das ganze sinnvoll einpflege. Bin leider kein Administrator oder ähnliches sondern lediglich hierhin gesetzt worden mit dem Problem :(
Jedoch soll mich das nicht davon abbringen. Verzeih mir einfach, dass ich trotzdem auf eine "einfache" Lösung hoffe.

Habe jetzt schonmal rumgedoktort, aber kriege das Script nicht zum Laufen. Naja vielleicht brauche ich einfach mehr Zeit.

Leider klappt es schon beim Einbinden per WebDav nicht. D.h. es ist ja eine Windowsfunktion soweit ich das verstanden habe. Also bin ich auf "Netzlaufwerk verbinden" und gebe da den http-Pfad vom HTML-Server an. Auch die Abfrage nach Kennwort kommt, jedoch kann er sich dann nicht verbinden. (Benutzername und Kennwort stimmen definitiv).
 
Wie gibst du deinen user ein?
probier mal folgendes (da ich annehme dass du dich an einen Server in einer Windows-Domäne verbindest)
user@domain
user@domain.local
domain\user
domain.local\user
domain/user
domain.local/user

je nach deiner Kombination aus Webserver und Client-OS kommt eine der Varianten in Frage.

poste mal dein script innerhalb eines [ quote ] Tags und mache User/passwörter unkenntlich oder andere nicht veröffnetlichbare Informationen....
 
Das Script läuft jetzt. Er druckt die neuen PDF´s 1-2 Sekunden nachdem sie angekommen sind aus. Einfach optimal :D:D

Habe das Script aus dem Link oben angepasst und verbastelt.

Code:
$ordner = "\\blaba\Desktop\PDF Ablauf\Neu\"
$archiv = "\\blabla\Desktop\PDF Ablauf\Archiv\"
$pdfcreator = "C:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe"
$Zeile = "Ich kam bis Zeile"




While 1
    Sleep(1000)
    $file = FileFindFirstFile($ordner & "\*.pdf")
    If $file <> -1 Then Print()
    FileClose($file)
WEnd



Func Print()
    While 1
        $pdffile = FileFindNextFile($file)
        $neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC
        If @error Then ExitLoop
        FileMove($ordner & $pdffile, $archiv & $neuname & ".pdf")
        While 1
            Sleep(100)
            If FileExists($archiv & $neuname & ".pdf") Then
                ExitLoop
            EndIf
		 WEnd


        RunWait('"' & $pdfcreator & '" /p "' & $archiv & $neuname & '.pdf"')
    WEnd
 EndFunc   ;==>Print

Kann ich damit eigentlich auch, nach Anpassung natürlich, auf den HTML zugreifen, oder ist das zuviel Arbeit?


Zu dem einbinden. User gebe ich ganz normal ein. hehe.
Bsp. Username: Kürbis kennwort: jojo

genau so gebe ich diese dann auch ein, sobald er Verbindung aufgebaut hat. Es poppt ja nur ein Standart-Anmeldefenster von Windows auf.

Das gleiche gebe ich übrigens bei der Abfrage vom HTML über Browser ein. Dürfte doch kein Unterschied sein oder?
 
Hi!

sieht ja schon mal nicht schlecht aus...

den Download musst du nur noch über die folgenden Funktionen realisieren:
InetClose Closes a handle returned from InetGet().
InetGet Downloads a file from the internet using the HTTP, HTTPS or FTP protocol.
InetGetInfo Returns detailed data for a handle returned from InetGet().
InetGetSize Returns the size (in bytes) of a file located on the internet.
InetRead Downloads a file from the internet using the HTTP, HTTPS or FTP protocol.

nachdem ich aber die Scriptsprache AutoIt nicht kenne musst du dir da selbst weiterhelfen.
 
Alles klar, werde ich machen^^

Ich bin schon super froh über die Anhaltspunkte, da muss ich mir nicht irgendwas zusammensuchen und aus den Fingern saugen.

Ich halte Euch mal auf dem Laufendem.

Vielen Dank Alex :D
 
So,

habe jetzt das Script angepasst. Im Prinzip ist es gar nicht so schwer.

Vorraussetzung dafür ist aber, dass das File das man herunterlädt einen bestimmten Namen hat. Habe das realisiert indem ich PDF Creator automatisch das File umbenennen lasse und falls ein neues kommt, dieses überschreibt. So kann das Script immer wieder auf den gleichen Namen(File) zugreifen ohne, dass es auf dem HTTP schieben, löschen, suchen müsste.

Du lädtst per Inetget das File herunter. Mein Http-server war noch mit Passwort geschützt, also Benutzername und Passwort mitgeben. per until Inetgetinfo (downloadcomplete) warten und bei Erfolgreichem Download abspeichern in einen Ordner.
Diesen Ordner dann vom Druck-Script (siehe oben) durchsuchen und drucken lassen.

Ich bin so happy, dass ich das geschafft habe :D:D

Vielen Dank an alle aber vor allem an Alex ;)

Gruß
Dave
 
zum Drucken würde ich Sumatra PDF nehmen:

http://code.google.com/p/sumatrapdf/wiki/CommandLineArguments

und startest die exe

Code:
sumatrapdf.exe -esc-to-exit -silent -exit-on-print -print-to "<printername>" "<dateipfad>"

das funktioniert sogar von einer Webadresse

Code:
sumatrapdf.exe -esc-to-exit -silent -exit-on-print -print-to "<printername>" "http://partners.adobe.com/public/developer/en/acrobat/sdk/AcroJS.pdf"


fertig?
 

Ähnliche Themen

Antworten
7
Aufrufe
2.347
Zurück
Oben