使用 Javascript 执行流程并将更新/回调发送到网络服务器

发布于 2024-07-06 16:46:21 字数 307 浏览 12 评论 0原文

我正在开发一个流程,允许人们上传 PDF 文件并通过基于 Web 的界面管理文档(页面顺序)。

PDF 文件的页面需要裁剪为特定尺寸才能打印,目前我们通过 Photoshop 操作来处理这些页面。

我想要做的是将 PDF 文件上传到专用服务器以执行所需的过程(Photoshop 操作、转换、将图像发送回 Web 服务器)。

执行这些功能的一些好方法是什么,但是向网络服务器发送更新以允许进程跟踪/进度条,以便让用户了解其文件的处理时间。

此外,一般来说,有哪些用于排队/跟踪作业/流程的好技术(重点是基于网络的技术)?

I am working on a process to allow people to upload PDF files and manage the document (page order) via a web based interface.

The pages of the PDF file need to be cropped to a particular size for printing and currently we run them through a Photoshop action that takes care of this.

What I want to do is upload the PDF files to a dedicated server for performing the desired process (photoshop action, convert, send images back to web server).

What are some good ways to perform the functions, but sending updates to the webserver to allow for process tracking/progress bars to keep the user informed on how long their files are taking to process.

Additionally what are some good techniques for queueing/tracking jobs/processes in general (with an emphasis on web based technologies)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遮云壑 2024-07-13 16:46:21

Derek,我相信您有使用 Photoshop 的理由,但说真的,Imagemagick 渲染对您来说还不够吗? 我曾经使用传真实用程序将 Fax.g3 文件转换为 TIFF,然后使用 Imagemagick 将对比度和亮度提高 15%,并将其转换回 PDF。 IM 作为独立的 Linux 程序由 system() 调用调用,我知道有新的 Imagemagick PECL 扩展。

Derek, I'm sure you have your reasons for using Photoshop, but seriously, did Imagemagick render insufficient for you? I worked once with fax utility that converted Fax.g3 files to TIFF, then increased contrast and brightnes by 15% using Imagemagick and converted it back to PDF. IM worked as standalone Linux program invoked by system() call and I know there is new Imagemagick PECL extension.

踏雪无痕 2024-07-13 16:46:21

创建一个队列,并将作业推送到该队列。 运行一个 cronjob 或守护进程,从队列中获取作业并处理它们。 确保使用某种锁定,以便可以安全地停止/启动守护进程/作业。

如果您希望工作很快完成,您可以使用一种称为“彗星”的技术。 基本上,您建立从 javascript(使用 XmlHttpRequest)到服务器端脚本的连接。 在此脚本中,您检查作业是否完成。 如果没有,你就睡一两秒钟——然后再检查一次。 你继续这样做,直到工作完成。 然后你给出回应。 结果是请求需要一段时间才能完成,但会立即返回。 然后您可以在 javascript 中采取适当的操作(重新加载页面或其他)。

Create a queue, and push jobs to that. Have a cronjob or daemon running that takes jobs from the queue and process them. Make sure that you use some sort of locking, so you can safely stop/start the daemon/job.

If you expect the job to finish quickly, you can use a technique known as "comet". Basically, you establish a connection from javascript (Using XmlHttpRequest) to your server-side script. In this script, you check if the job is completed. If not, you sleep for a second or two - then check again. You keep doing this until the job finishes. Then you give a response back. The result is that the request will take a while to complete, but will return immediately. You can then take appropriate action in javascript (Reload the page or whatever).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文