Verwenden Sie cURL, um ein Webformular zum Drucken zu übermitteln

Verwenden Sie cURL, um ein Webformular zum Drucken zu übermitteln

Ich verwende Xubuntu 16.04. Ich konnte die Treiber für einen Xerox 7545 nicht richtig konfigurieren, um mit einem Standardgruppenkonto zu drucken. Ich kann jedoch drucken, indem ich mein Dokument als PDF speichere. Dann kann ich im Browser zur IP-Adresse des Druckers gehen. Dort kann ich ein Webformular zum Drucken absenden.

Ich möchte einen cURL-Befehl in ein Skript integrieren, um den Druckvorgang effizienter zu gestalten. Ich bin überzeugt, dass meine cURL-Syntax gut ist. (Ich konnte erfolgreich auf einem anderen Drucker drucken.)

curl -F "frmFileUpload=@/home/brock/Desktop/example.pdf" -F "frmUserId=####" http://###.##.##.###/print/print.php?submitted=true

Ich glaube jedoch, dass mein Druckauftrag immer wieder gelöscht wird. Auf der Webseite, auf der Sie den Druckauftrag übermitteln, wird diese Meldung angezeigt: „Hinweis: Bitte warten Sie auf das Bestätigungsfenster für die Auftragsübermittlung, bevor Sie zu einer anderen Seite navigieren. Andernfalls wird der Auftrag gelöscht.“

Wenn ich auf der Webseite etwas absende, wird die Seite geladen (um das Formular abzusenden). Dann erscheint ein kleines Dialogfeld:

Bildbeschreibung hier eingeben

Die Übermittlungsseite besteht aus zwei <form></form>Abschnitten. Der folgende enthält das Feld zum Hochladen von Dateien.

<form enctype="multipart/form-data" action="/upload/xerox.set" method="post">

Folgendes enthält das Feld „Benutzer-ID“, die Anzahl der Kopien usw.

<form action="#" method="post">

Hier ist die Schaltfläche „Senden“.

<button type="button" onclick="SubmitForm();">Submit Job</button>

Hier istder Quellcodefür die SubmitForm()Funktion. Die Funktion beginnt in Zeile 144 und endet in Zeile 482.

Wenn ich das Formular mit cURL absende und später ausführe, echo $?wird es 0ohne Fehler zurückgegeben. Ich habe versucht, die beiden anderen actionURLs sowie die URL der Seite selbst zu verwenden. Die URL im obigen Befehl stammt aus der Ausführung von „Element prüfen“ und der Anzeige der Registerkarte „Netzwerk“ während der Übermittlung.

Ich denke, das Problem ist folgendes: „Hinweis: Bitte warten Sie auf das Bestätigungsfenster zur Auftragsübermittlung, bevor Sie zu einer anderen Seite navigieren. Andernfalls wird der Auftrag gelöscht.“

Ich habe Javascript in meinem Browser deaktiviert. Ich habe dann versucht, die Seite zu senden, aber die Seite wurde nicht geladen. Javascript auf der Seite zum Senden ist offensichtlich Voraussetzung für die Übermittlung. Gibt es eine Möglichkeit, das zu umgehen? Kommentare und Ideen sind willkommen. Danke

Antwort1

Das Popup mit der Meldung „Der Auftrag wurde zum Drucken übermittelt“ ist einJavaScript-WarnungPopup, und es gibt keine Möglichkeit, den Alarm über JS zu bestätigen, obwohl Sie die Standardalarmaktion überschreiben können - sieheHier.

Ich sehe, dass Sie versucht haben, die Aktions-URL aus dem Formular abzurufen, und das hat mich auf eine Idee gebracht: Können Sie die Funktionsdefinition der Funktion finden, die die Schaltfläche „Senden“ aufruft? Die onclickAktion der Schaltfläche „Senden“ wird aufgerufen. SubmitForm()Sehen Sie also nach, ob Sie sie im Quellcode finden und in cURL reproduzieren können.

verwandte Informationen