Я заметил, что LibreOffice Writer обладает хорошим качеством: при загрузке файла .docx и его немедленном сохранении структура сохраненного файла немного отличается от исходного файла — в хорошем смысле — это как бы решает некоторые проблемы со структурой .docx и т. д. (что позволяет мне позже лучше обрабатывать его с помощью Apache POI).
Я хотел бы просто использовать его для исправления файлов .docx, загружая и сразу сохраняя их — либо из командной строки, либо каким-то образом, напрямую вызывая функции Writer.
Буду признателен за некоторые указания по решению.
решение1
Вы можете использовать libreoffice
инструмент CLI, у него есть --convert-to
опция конвертации файлов, которую можно использовать для конвертации в тот же формат, который вам нужен. Если вы используете это без указания выходного каталога, топерезаписываетисходный файл, и вы не можете дать ему другое имя выходного файла. Обойти это можно, преобразовав файл в /tmp/
first и затем переместив его обратно:
libreoffice --convert-to docx --outdir /tmp/ NAME.DOCX && mv /tmp/NAME.DOCX ./NEWNAME.DOCX
Вам просто нужно изменить жирные части, набранные заглавными буквами,NAME.DOCX
к вашему входному имени файла иNEWNAME.DOCX
к желаемому имени выходного файла.
В bash
командной строке это можно сократить до:
libreoffice --convert-to docx --outdir /tmp/ NAME.DOCX && mv !#:4!#:5 ./NEWNAME.!#:2
Это используетbash
История Расширениетак что вам не придется вводить пути и имена файлов несколько раз – вам просто нужно изменитьNAME.DOCX
к вашему входному имени файла иNEWNAME
к желаемому имени выходного файла без расширения.