2015-10-26 10 views
0

У меня есть node.js веб-приложение, и я хочу, чтобы иметь возможность конвертировать многие документы (в то же время) в PDF. В этот момент я использую libreoffice с очередью (цель очереди - избежать бесконечного преобразования для файла - если libreoffice не может преобразовать файл за определенный период времени, тогда я убью этот процесс). Проблема в том, что если у меня есть два пользователя, которые загружают файлы, и оба из них загружают большие файлы, второй пользователь должен дождаться завершения первого.Как конвертировать файлы в PDF одновременно?

Есть ли способ конвертировать файлы одновременно?

Я хочу заменить libreoffice на другой PDF-конвертер.

Заранее спасибо.

+0

попробуйте pandoc pandoc -o output.pdf -f docx input.docx – prasun

+0

Мне также нужно преобразовать документ .xlsx. – roroinpho21

ответ

0

Одним из способов сделать несколько преобразований одновременно является просто запуск нескольких процессов, которые выполняют преобразования. Затем, когда что-то добавляется в очередь, оно будет передано следующему доступному внешнему процессу, который работает над преобразованиями. Поскольку преобразование файлов, вероятно, представляет собой сочетание CPU и дискового ввода-вывода, вы можете поэкспериментировать с лучшим количеством процессов преобразования для поддержки.

Существует множество способов управления очередью. Если ваше приложение node.js поддерживало очередь, тогда было бы управлять процессом передачи элемента из очереди во внешний процесс и отслеживать, какие внешние процессы были свободными и готовыми к новому заданию. Если очередь находилась в базе данных или в файловой системе, которую могли прочитать все внешние процессы, сами внешние процессы могли наблюдать за очередью.

+0

Я думаю, проблема в 'libreoffice', потому что если я открою два терминала и в каждом из них запустит команду преобразования файлов, то второй terminat будет waintg для первого, чтобы завершить его преобразование. – roroinpho21

+0

Чтобы выполнить преобразование файла, я использую команду 'libreoffice --headless --convert-to pdf path-to-file', используя' node.js childProcess spawn'. – roroinpho21

+0

@ roroinpho22 - Тогда вам понадобится другой конвертер. – jfriend00