2015-10-26 18 views
0

我有一个node.js网络应用程序,我希望能够将许多文件(在同一时间)转换为PDF。在这一刻我用libreoffice与队列(队列的目的是为了避免一个文件的无限转换 - 如果libreoffice无法在特定的时间段内转换文件,那么我杀死该进程)。问题是,如果我有两个用户上传文件,并且他们都上传大文件,第二个用户必须等待第一个用户完成。如何同时将文件转换为PDF?

有什么办法可以同时转换文件吗?

我愿意用另一个PDF转换器替换libreoffice

预先感谢您。

+0

尝试pandoc pandoc -o output.pdf -f docx input.docx – prasun

+0

我也必须转换'.xlsx'文件。 – roroinpho21

回答

0

同时进行多次转换的一种方法是启动正在进行转换的多个进程。然后,只要将某些内容添加到队列中,就会将其转交给正在进行转换的下一个可用外部进程。由于文件转换可能是CPU和磁盘I/O的混合,因此您可以尝试使用最佳数量的转换过程来维护。

有很多方法可以管理队列。如果您的node.js应用程序正在维护队列,那么它将管理将队列中的项目交给外部进程并跟踪哪些外部进程已空闲并准备好进行新作业的过程。如果队列位于所有外部进程都可以读取的数据库或文件系统中,则外部进程本身可以监视队列。

+0

我认为问题出在'libreoffice'上,因为如果我打开两个终端并在其中每个终端都运行一个文件转换命令,那么第二终端就是第一个终端完成其转换 – roroinpho21

+0

要执行文件转换,我使用命令'libreoffice --headless --convert-to pdf path-to-file' using'node.js childProcess spawn'。 – roroinpho21

+0

@ roroinpho22 - 然后你将需要一个不同的转换器。 – jfriend00