使用 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

但是,我认为我的打印作业总是被删除。在您提交打印作业的网页上,有以下消息:“注意:请等待作业提交确认窗口,然后再导航至其他页面。否则,作业将被删除。”

当我在网页上提交时,页面加载(用于提交表单)。然后弹出一个小对话框:

在此处输入图片描述

提交页面分为两<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没有返回任何错误。我尝试使用其他两个actionURL 以及页面本身的 URL。上述命令中的 URL 来自在提交期间执行检查元素和查看网络选项卡。

我认为问题是这样的:“注意:在导航到另一个页面之前,请等待作业提交确认窗口。否则,作业将被删除。”

我在浏览器中禁用了 javascript。然后我尝试提交,但提交内容无法加载。提交页面上运行的 Javascript 显然是提交的必要条件。有办法解决这个问题吗?欢迎提出任何意见或想法。谢谢

答案1

弹出“作业已提交打印”的提示是JavaScript 警报弹出窗口,并且无法通过 JS 确认警报,尽管你可以覆盖默认警报操作 - 请参阅这里

我看到您尝试从表单中获取操作 URL,这给了我一个想法 - 您能找到提交按钮调用的函数的函数定义吗?提交按钮的onclick操作称为SubmitForm(),因此看看您是否可以在源代码中找到它并在 cURL 中重现它。

相关内容