#node.js #excel #pdf #libreoffice
Вопрос:
Я использую LibreOffice 7.1.3.2 10(сборка:2) для преобразования файлов excel(.xlsx) в pdf-файлы на сервере ubuntu. У меня есть только CLI-версия libre office на сервере. Я использую node.js и выполнение следующей команды для преобразования:
libreoffice --headless --convert-to pdf 119.xlsx --outdir /home/pdfs/19
Преобразование excel в pdf работает, и pdf-файл успешно создается. Но если я отправлю запрос на это преобразование много раз (например, 20 запросов в течение 5 минут), то pdf не будет создан. Я также не получаю ошибок из библиотеки.
Как такое могло случиться? Может ли это быть что-то связанное с кэшем или временной папкой?
Обновить:
Я проверил процессы, запущенные на сервере с помощью «top», и обнаружил процесс soffice, который потребляет ~100% процессора. Может быть, процесс повторяется, когда он обнаруживает ошибку?
Поэтому я попытался убить процесс, если есть ошибка, но процесс все равно остается. Пока этот процесс продолжается, никакие другие преобразования pdf не работают. Затем через некоторое время (примерно через несколько часов) этот процесс останавливается, и только тогда преобразования pdf снова начинают работать.
const child = exec(command, { timeout: 10000, maxBuffer: 20 * 1024 }, (error: any, stdout: any, stderr: any) => {
if (error) {
console.log(`error: ${error.message}`);
console.log(child.pid);
child.kill();
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
resolve();
}
console.log(`stdout: ${stdout}`);
resolve();
});
Комментарии:
1. Как используется ваша память? Вы запрашиваете конверсии последовательно или одновременно? Вы пытались найти ограничение на количество выполняемых запросов, пока один или несколько не выполнятся?
2. Можете ли вы также показать, как вы
libreoffice
выполняете команду через nodejs?3. Привет @thebusybee спасибо за ваш вклад, я обновил свой ответ. пожалуйста, проверьте
4. Хм, странно.. может быть, попробуйте обновить до >= 7.2? Там было сообщение об ошибке, которое звучит похоже ->> bugs.documentfoundation.org/show_bug.cgi?id=124798 но там сказано, что это уже исправлено в 6.3
5. Да. Я изменил версию libre office на 7.1.6.2 10(сборка:2), и она больше не создает проблему с процессором на 100%. Большое вам спасибо @eol ! Если вы поставите это в качестве ответа, то я приму его 🙂
Ответ №1:
Согласно Bugzilla LibreOffice, была зарегистрирована аналогичная ошибка (см. https://bugs.documentfoundation.org/show_bug.cgi?id=124798) и, похоже, это было исправлено в более новых версиях:
Повторение 6.2. Никаких повторений 6.3 и 7.2 . Закрытие.
Поэтому я бы предложил перейти на более новую версию.
Комментарии:
1. отлично работал при обновлении до 7.1.6.2 10(Сборка:2) 🙂