2015-10-26 17 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