Работа LibreOffice в командной строке: конвертирование большого количества файлов и вывод содержимого офисных файлов в консоль


Предыдущая | Следующая

Работа в консоли, если вы в этом разбираетесь, может увеличить вашу производительность. Особенно если это касается большого количества однотипных задач.

Предположим, нам дано множество офисных файлов в формате .doc (или любом другом формате, который поддерживает LibreOffice), и мы хотим их переконвертировать в другой формат. Если файлов немного, то их можно открыть в LibreOffice и выбрать сохранение в нужном формате. Но если их десятки и более, то эта рутинная работа станет долгой и утомительной.

К счастью, LibreOffice умеет работать в консоли. Причём нам даже не нужно писать скрипты, поскольку она понимает подстановочные символы.

Сохранение большого количества файлов в другой формат

Для этого нужно запустить команду

1
soffice --headless --convert-to doc Имя_файла

Где

Ещё примеры команды:

Конвертирует все поддерживаемые файлы в каталоге Математика в html формат и сохранит их в текущем каталоге^

1
soffice --headless --convert-to html Математика/*

Конвертировать все файлы в формате .doc в формат PDF и сохранить их в каталоге /home/user:

1
soffice --headless --convert-to pdf:writer_pdf_Export --outdir /home/user *.doc

Конвертировать все файлы в формате .doc в формат html с кодировкой UTF8 и сохранить их в текущем каталоге.

1
soffice --headless --convert-to "html:XHTML Writer File:UTF8" *.doc

Конвертировать все файлы в формате .doc в обычный текст с кодировкой UTF8.

1
soffice --headless --convert-to "txt:Text (encoded):UTF8" *.doc

Вывод содержимого файла в консоль

Иногда нужно, чтобы консольный Bash скрипт прочитал содержимое офисного файла и вывел это содержимое в консоль. Если бы нас интересовали обычные текстовые файлы, то мы могли бы воспользоваться командой cat. Но офисные файлы имеют сложную структуру и иногда представляют собой архивы, т.е. бинарные файлы. Поэтому для этого у LibreOffice есть специальная опция командной строки --cat:

1
soffice --headless --cat имя_файла

Конечно, сложные элементы, которые не могут быть отображены в командной строке (картинки, формы и т.д.), показаны не будут.