Mit Skript Formulare mit Javascript ausfüllen und absenden?
Hallo Liste, um Druckjobs an einen Plotter zu schicken kann ich dort eine Webpage ausfüllen und dann abschicken. Abschicken geht über ein Javascript in der HTML-Seite. Da wir das automatisiert für alle etwa 1000 Benutzer anbieten möchten, würde ich das gerne aus einem Skript heraus machen. Hat mir jemand Hinweise, wie ich 1. Felder in den Formularen per Skrpt ausfüllen kann (oder die values in einer Datei ausfülle) und 2. das Verschicken mit Javascript aufrufen kann? Viele Grüsse Joachim
Hi, On Thu, 25 Aug 2005, Joachim Kieferle wrote:
um Druckjobs an einen Plotter zu schicken kann ich dort eine Webpage ausfüllen und dann abschicken. Abschicken geht über ein Javascript in der HTML-Seite.
Nett, aber ziemlich umständlich. Schau vielleicht mal nach, ob der Plotter auch auf Port 515, 631, 9100, 21 erreichbar ist. Damit wird dein Vorhaben wesentlich einfacher ;)
Da wir das automatisiert für alle etwa 1000 Benutzer anbieten möchten, würde ich das gerne aus einem Skript heraus machen.
Wie wäre es mit CUPS?
Hat mir jemand Hinweise, wie ich
1. Felder in den Formularen per Skrpt ausfüllen kann (oder die values in einer Datei ausfülle) und 2. das Verschicken mit Javascript aufrufen kann?
ja, aber ich denke es ist wesentlich einfach sowas über CUPS zu lösen. Bist du ausserdem sicher, dass es javascript ist? Nicht ein CGI mit <form> Tags? man curl Greetings Daniel -- "Ich bin ein Teil von jener Kraft, die stets das Böse will und stets das Gute schafft."
Hallo Daniel, Daniel Lord wrote:
Hi,
On Thu, 25 Aug 2005, Joachim Kieferle wrote:
um Druckjobs an einen Plotter zu schicken kann ich dort eine Webpage ausfüllen und dann abschicken. Abschicken geht über ein Javascript in der HTML-Seite.
Nett, aber ziemlich umständlich. Schau vielleicht mal nach, ob der Plotter auch auf Port 515, 631, 9100, 21 erreichbar ist. Damit wird dein Vorhaben wesentlich einfacher ;)
[... ]
Wie wäre es mit CUPS?
Der Drucker ist sowieso schon über CUPS / Samba angeschlossen. Allerdings bietet die Web-Maske weitere Möglichkeiten an UND die Leute können z.B. direkt PDFs oder JPEGs oder andere ausdrucken, also ohne Druckertreiber (es handelt sich übrigens um einen DesignJet 4000 PS. Ausserdem möchte ich, dass die Leute über eine von uns generierte Webmaske (mit https) ausdrucken können, sich aber vorher authentifizieren müssen wegen der Abrechung der Plotkosten. D.h. ich würde die Druckdatei, Benutzername und Parameter sammeln und sie dann bei erfolgreicher Authentifizierung an den Plotter weitergeben. So kann ich sicher sein, dass die/der Absender/in auch wirklich die genannte Person ist.
Hat mir jemand Hinweise, wie ich
1. Felder in den Formularen per Skrpt ausfüllen kann (oder die values in einer Datei ausfülle) und 2. das Verschicken mit Javascript aufrufen kann?
ja, aber ich denke es ist wesentlich einfach sowas über CUPS zu lösen. Bist du ausserdem sicher, dass es javascript ist? Nicht ein CGI mit <form> Tags?
Für Submit und so wird Javascript verwendet. Es kann natürlich sein, dass das halt vom Browser so gebraucht wird. ... ausserdem ist in dem DesignJet 4000 PS ein Linux-Rechner, deshalb bin ich sicher dass ich den überlisten kann ;-)).
man curl
Das sieht gut aus und wahrscheinlich genau was ich brauche. Muss mich da mal reinlesen. Danke und viele Grüsse Joachim
Hallo, Am Thu, 25 Aug 2005, Joachim Kieferle schrieb:
um Druckjobs an einen Plotter zu schicken kann ich dort eine Webpage ausfüllen und dann abschicken. Abschicken geht über ein Javascript in der HTML-Seite.
Da wir das automatisiert für alle etwa 1000 Benutzer anbieten möchten, würde ich das gerne aus einem Skript heraus machen.
perldoc WWW::Mechanize und evtl. WWW::Mechanize::FormFiller? Ich kenn das noch nicht genauer. Musst du ggfs. nachinstallieren: als root per 'cpan -i WWW::Mechanize' (oder besser per 'cpan -t WWW::Mechanize' als user und dann als root nur 'make -C $CPANROOT/build/WWW-Mechanize-<VERSION> install'). Was $CPANROOT ist musst beim ersten Aufruf von cpan / -MCPAN angeben, das solltest du eigentlich wissen. Rausbekommen kannst du das aber auch in der cpan-shell ('cpan' oder perl -MCPAN -e'shell') und dann am 'cpan>'-Prompt ein 'o conf cpan_home' eingeben oder per shell: perl -I ~/.cpan -e 'BEGIN { use CPAN::Config; eval "require CPAN::MyConfig || 1"; } print "$CPAN::Config->{cpan_home}\n";' -dnh -- Die Zeit wurde nur erfunden, damit nicht alles auf einmal passiert. -- Dieter Bruegmann
David Haller wrote:
Hallo,
Am Thu, 25 Aug 2005, Joachim Kieferle schrieb:
um Druckjobs an einen Plotter zu schicken kann ich dort eine Webpage ausfüllen und dann abschicken. Abschicken geht über ein Javascript in der HTML-Seite.
Da wir das automatisiert für alle etwa 1000 Benutzer anbieten möchten, würde ich das gerne aus einem Skript heraus machen.
perldoc WWW::Mechanize
Hallo Daniel, hallo David, vielen Dank für Eure Tips. Derzeit scheint "curl" das Richtige zu sein. In der html-Datei werden einzelne Werte mit Javascript berechnet. D.h. curl und perl alleine können das Formular (leider) nicht ausfüllen. In der curl-Anleitung habe ich herausgefunden, dass man den Eingabstring herausbekommt indem man "method" von post auf get ändert. Habe zu Eurer Info mal auf http://www.fab.fh-wiesbaden.de/test_designjet_4000ps die Dateien 1. original_submit.htm (Originaldatei) 2. original_submit_mit_GET.htm (post auf get geändert) und 3. _gefixt_submit_mit_Get.htm (post auf get; UserName deaktiviert) abgelegt. Die 3. Datei ist also die massgebliche Datei. Nach ihr habe ich dann folgendes erstellt: +++++++ das ist jetzt alles in einer Zeile +++++++ curl -F "System1=@./test4000.pdf" -F "time=1125012657773" -F "uploadId=38599493950" -F "job_name=" -F "selectedJobsNb=0" -F "StoreFile=false" -F "PrintQuality=AUTOSELECT" -F "OptimizeFor=UNDEFINED" -F "MaximumDetail=UNDEFINED" -F "Copies=" -F "HoldJob=DEFAULT" -F "UserName=joe" -F "MirrorImage=UNDEFINED" -F "InkedArea=UNDEFINED" -F "FullBleedMargins=UNDEFINED" -F "Rotate=Default" -F "PageSizeRadio=standard" -F "PageSizeStandard=Default" -F "PageSizeCustomWidth=" -F "PageSizeCustomHeight=" -F "PageSizeUnit=mm" -F "Orientation=PORTRAIT" -F "ScaleToRadio=standard" -F "ScaleToStandard=Default" -F "ScaleToPercent=" -F "ScaleToCustom=" -F "ScaleToCustomUnit=mm" -F "ScaleToCustomOrientation=width" -F "mediaSource=DEFAULT" -F "PantAutoCal=DEFAULT" -F "JobCMYKEmul=DEFAULT" -F "JobRGBEmul=DEFAULT" -F "RenderingIntent=UNDEFINED" -F "ColorGrayScale=UNDEFINED" -F "BlackPointCompensation=DEFAULT" -F "PageSizeOrientation=DEFAULT" -F "operation=submitJob" http://192.168.33.22/hp/device/webAccess/uploadEnd.htm?uploadId=38599493950 +++++++ und hier das Ende +++++++ Wenn ich das aus einem Skript oder der Kommandozeile heraus aufrufe kommt nur die Fehlermeldung: "This document has moved ..". Habt Ihr noch einen Tip? Ansonsten müsste ich mal bei HP nachfragen. Komme leider nicht in den Webserver des Plotters rein um mal "innen" nachschauen zu können woran es liegen könnte, viele Grüsse Joachim
participants (3)
-
Daniel Lord
-
David Haller
-
Joachim Kieferle