cURL を使用して印刷用の Web フォームを送信する

cURL を使用して印刷用の Web フォームを送信する

私は Xubuntu 16.04 を使用しています。デフォルト グループ アカウント設定で Xerox 7545 のドライバーを正しく設定して印刷することができませんでした。ただし、ドキュメントを PDF として保存することで印刷できます。その後、ブラウザーでプリンターの IP アドレスにアクセスできます。そこで、印刷用の Web フォームを送信できます。

印刷プロセスをより効率的にするために、cURL コマンドをスクリプトに統合したいと思います。cURL 構文は適切であると確信しています。(別のプリンターに正常に印刷できました。)

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

しかし、印刷ジョブが削除され続けているように思います。印刷ジョブを送信する Web ページに、次のメッセージが表示されます。「注意: 別のページに移動する前に、ジョブ送信の確認ウィンドウを待ってください。そうしないと、ジョブが削除されます。」

Web ページで送信すると、ページが読み込まれます (フォームを送信するためのページ)。次に、小さなダイアログ ボックスがポップアップ表示されます。

ここに画像の説明を入力してください

送信ページには 2 つの<form></form>セクションがあります。次のセクションには、ファイルのアップロード フィールドがあります。

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

以下には、ユーザー ID フィールド、コピー数などが含まれます。

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

ここに送信ボタンがあります。

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

ここはソースコード関数SubmitForm()は 144 行目から始まり、482 行目で終わります。

cURL を使用してフォームを送信し、後で実行すると、エラーecho $?は返されません0。ページ自体の URL だけでなく、他の 2 つの URL を使用してみましたaction。上記のコマンドの URL は、送信中に要素の検査を実行し、ネットワーク タブを表示した結果です。

問題は次のとおりだと思います: 「注意: 別のページに移動する前に、ジョブ送信の確認ウィンドウを待ってください。そうしないと、ジョブが削除されます。」

ブラウザで JavaScript を無効にしました。その後、送信しようとしましたが、送信が読み込まれませんでした。送信ページで JavaScript が実行されていることは、送信に必須であることは明らかです。これを回避する方法はありますか? コメントやアイデアがあれば、ぜひお寄せください。ありがとうございます。

答え1

「ジョブが印刷のために送信されました」というポップアップはJavaScript アラートポップアップが表示され、JS経由でアラートを確認する方法はありませんが、デフォルトのアラートアクションを上書きすることはできます。ここ

フォームからアクション URL を取得しようとしていることがわかりました。そこからヒントを得ました。送信ボタンが呼び出す関数の関数定義を見つけられますか? 送信ボタンのonclickアクションは と呼ばれますSubmitForm()。ソース コード内で見つけて、cURL で再現できるかどうか確認してください。

関連情報