Перейти к содержанию

LibreOffice (форматы Office)

Конвейер перевода Office выбирает лучший доступный бэкенд в этом порядке:

  1. win32com (Windows + установленный MS Office) — наивысшая точность
  2. LibreOffice UNO (кроссплатформенный) — запасной, когда win32com нет
  3. python-docx / openpyxl / python-pptx (только современные форматы) — чистый Python запасной, когда ни одного из вышеуказанных нет

LibreOffice — единственный путь для устаревших .doc / .xls / .ppt на Linux и macOS, и рекомендуемый путь на этих платформах также для современных форматов Office (лучшая точность, чем у чисто-Python бэкенда, особенно для таблиц и встроенных объектов).

Установка

brew install --cask libreoffice

Или скачай с https://www.libreoffice.org/download/download/.

sudo apt install libreoffice
sudo dnf install libreoffice

Desktop-приложение на Windows обычно использует win32com с установленным MS Office — LibreOffice — запасной вариант, если MS Office отсутствует. Установи с https://www.libreoffice.org/download/download/.

Проверка

soffice --version

Если получаешь "command not found" на macOS, бинарник находится в /Applications/LibreOffice.app/Contents/MacOS/soffice. Приложение автоматически обнаруживает его по распространённым путям установки, но ты можешь переопределить в Настройки → Общие → Путь LibreOffice при необходимости.

Что он обеспечивает

Когда LibreOffice — активный бэкенд:

Функция Заметка
Современный Office (.docx, .xlsx, .pptx) Используется как запасной, когда win32com недоступен
Устаревший Office (.doc, .xls, .ppt) Требуется — чистый Python не может их прочитать
ODF (.odt, .ods, .odp) Используется для round-trip конвертации, когда Авто-конвертация ODF включена
Авто-конвертация устаревшего / ODF → OOXML Требуется

Фоновый процесс

В первый раз, когда LibreOffice нужен, приложение запускает процесс soffice в headless-режиме и поддерживает его живым между переводами (office_lifecycle.py). Он автоматически выключается при выходе из приложения.

Оговорки

Время запуска при первом запуске

Первый перевод, который попадает на LibreOffice, ждёт ~5-10 секунд для запуска soffice. Последующие переводы повторно используют тот же процесс и быстры.

Логи краша JVM

Java-компонент LibreOffice иногда производит файлы hs_err_pid*.log, когда сегфолтит. Приложение направляет их в временный каталог, чтобы они не загрязняли папку твоего проекта.

Авто-конвертация устаревшего / ODF

Включи Настройки → Перевод → Авто-конвертация устаревшего, если регулярно переводишь .doc / .xls / .ppt. Конвейер сначала конвертирует их в .docx / .xlsx / .pptx (через convert_to_modern_format), переводит современную копию, затем конвертирует обратно. Точность намного выше, чем при прямом переводе устаревшего формата.