суббота, 3 декабря 2016 г.

Аргументы командной строки в LibreOffice

На днях сделал патч в справку по ошибке tdf#100836. И вот казалось бы, там есть файл, который всё описывает, и нужно только перенести это в код, но не так тут всё просто. Во первых, эта справка появляется в консольном режиме, а он был очень запущен. На windows, вместо консоли, она открывалась в окне, которое не имело прокрутки. Во вторых, во время написания, были найдены ошибки, и их пришлось исправить. В итоге, в место одного патча, было сделано аж 3: два мной и один Mike Kaganski. И ещё две заявки на улучшение. И патч в core делался аж две недели. И так как эта справка появится только следующим летом в LibreOffice, и будет ли доступен перевод я не знаю, я перевожу её тут, как всегда с дополнительными пояснениями.

Данная справка будет доступна во встроенной Справке, на странице онлайн Справки и при вызове soffice с флагом --help.
Использование: soffice [аргументы…]
Аргументы — это сами флаги, параметры флагов и имена файлов, если необходимо, то с их путями.
Всего в справке есть 7 разделов, они собраны в кучу по принципу места использования.

Справочная информация

--help | -h | -? — Показывает справку и завершает работу. В настоящее время не игнорирует некоторые флаги, поэтому могут быть казусы. Используйте один из вариантов.
--helpwriter — Открывает встроенную, а если её нет, то онлайн справку на Writer.
--helpcalc — Открывает выстроенную, а если её нет, то онлайн справку на Calc.
--helpdraw — Открывает выстроенную, а если её нет, то онлайн справку на Draw.
--helpimpress — Открывает встроенную, а если её нет, то онлайн справку на Impress.
--helpbase — Открывает встроеную, а если её нет то, онлайн справку на Base.
--helpbasic — Открывает встроенную, а если её нет то, онлайн справку на Basic
--helpmath — Открывает встроенную, а если её нет то, онлайн справку на Math.
Естественно для online Справки нужен будет интернет. Если нет встроенной справки и интернета, то справка будет не доступна. Конечно, в первую очередь эти возможности будут удобны разработчикам встроенной документации на LibreOffice, так как позволяют делать меньше телодвижений при тестировании справки.
--version — Показывает версию LibreOffice.
--nstemporarydirectory — (работает только в песочнице MacOS X) Возвращает путь до папки с временными файлами для текущего пользователя и завершает работу. Игнорирует все другие аргументы.

Основные аргументы

--quickstart[=no] — Активирует[Отключает] сервис быстрого запуска. Может принимать только одно значение после равно (no), которое отключает этот сервис.
--nolockcheck — Отключает проверку удалённых копий использующих данную инсталляцию.
--infilter={ИмяФильтра} — Принудительно использует указанный тип фильтра импорта, если это возможно. Если не возможно, используется возможный для документа.
К сожалению, в настоящее время нет простого способа узнать имена фильтров.
Для примера:
--infilter="Calc Office Open XML"
--infilter="Text (encoded):UTF8,LF,,,"
Обратите внимание, что названия фильтров могут поменяться, данные примеры показывают использование флага. К сожалению, сейчас нет простого способа узнать все используемые фильтры.
--pidfile={файл} — Хранит pid для soffice.bin для {файла}.
--display {display} — Устанавливает переменную окружения DISPLAY в UNIX-подобных системах в значение {display} (поддерживается только сценарием запуска для LibreOffice)

Пользовательский/программный интерфейс контроля

--nologo — Отключает начальную заставку при старте программы.
--minimized — Запускает в режиме минимизации. Начальная заставка при старте не отключается.
--nodefault — Запускает без показа начального окна программы.
--invisible — Запускает в невидимом режиме. Ни заставка, ни начальное окно не будут видны. Однако, контроль над LibreOffice остаётся, и остаётся возможность управлять документами и диалоговыми окнами при помощи API. Завершение работы LibreOffice с этим параметром возможно только через диспетчер задач (Windows) или командой kill (UNIX-подобных операционных систем). Этот параметр не может быть использован в сочетании --quickstart.
--headless — Запускается в режиме без использования графического пользовательского интерфейса. Это специальный режим может быть использован, когда приложение контролируется внешним клиентом через API.
Обратите внимание на два последних флага. Использование --invisible не отключает графический интерфейс, все документы и диалоговые окна будут выводиться на монитор. --headless же позволяет использовать «тихий режим», когда для работы графический интерфейс не нужен.
--norestore — Отключает перезапуск и восстановление документа после падения приложения.
Разработчики «рекомендовали» мне удалить следующий флаг из справки, но так как он есть, и вы можете найти отрывочную информацию о нём, я указываю всю доступную мне информацию.
--splash-pipe= — Использует com.sun.star.office.PipeSplashScreen вместо com.sun.star.office.SplashScreen. Символ = (равно) является обязательным, хотя вся строка после него будет проигнорирована. Этот флаг используется в вызове soffice из oosplash на UNIX-подобных системах и не рекомендован для использования в консоли.
--accept={UNO-URL} — Указывает строку подключения в формате UNO-URL, создающуюю для UNO приёмника, через которые другие программы могут подключаться для доступа к API. UNO-URL — это строка вида uno:connection-type,params;protocol-name,params;ObjectName. При этом, судя по коду LibreOffice, ObjectName будет проигнорировано.
--unaccept={UNO-URL} — Закрывает приёмник, который был сделан при помощи --accept. Возможно использовать --unaccept=all для закрытия всех созданных приёмников.
--language={lang} — Указывает на использование конкретного языка, если до этого язык не был выбран для пользовательского интерфейса. Язык указывается в формате тегов IETF. Этот флаг работает только при установке приложения, потому что, как только приложение установлено и запущено, считается что язык уже выбран. Удобен для установки на удалённые машины.

Аргументы разработчика

--terminate_after_init — Выходит после завершения инициализации (никакие документы не будут загружаться).
--eventtesting — Выходит после загрузки документа.

Аргументы создания новых документов

Следующие аргументы создают пустой документ указанного вида. Только один из них может быть использован в одной командной строке. Но если после аргумента указать название файла, то LibreOffice будет стараться открыть документ в этом компоненте. При не возможности открыть в выбранном компоненте, LibreOffice загружает документ в любом возможном.
--writer — Создаёт пустой документ Writer.
--calc — Создаёт пустой документ Calc.
--draw — Создаёт пустой документ Draw.
--impress — Создаёт пустой документ Impress.
--base — Создаёт пустой документ базы данных.
--global — Создаёт пустой основной документ Writer.
--math — Создаёт пустой документ Math.
--web — Создаёт пустой документ HTML.

Аргументы открытия файлов

Аргументы описанные ниже определяют, как рассматриваются имена файлов указанные после них. Файлы для аргумента выбираются между этим аргументом и следующим указанным аргументом за ним. При использовании по умолчанию будут открываться документы для редактирования, а также создаваться новые документы из шаблонов. -n — Обрабатывает последующие имена файлов как шаблоны для создания новых документов.
-o — Открывает следующие файлы для редактирования, в независимости от того являются ли они шаблоны или нет.
--pt {ИмяПринтера} — Печатает файлы на принтере ИмяПринтера, после чего эти файлы закрываются. Заставка приложения не появляется. При многократном использовании, только последний Имя_принтера будет действительным для всех документов запущенных с флагом --pt. Также, --printer-name агрумента --print-to-file переключает интерфейс ИмяПринтера.
-p — Печатает указанные файлы на принтере по умолчанию, после чего эти файлы закрываются. Заставка приложения не появляется. Если имена файлов содержат пробелы, они должны быть заключены в кавычки.
--view — Открывает указанные файлы для просмотра в режиме только чтение.
--show — Открывает документы презентации и начинает их показ немедленно. Файлы закрываются после показа. Те файлы, которые не являются документами Impress открываются в режиме по умолчанию, независимо от предыдущего режима.
--convert-to ИмяФильтраВыходногоФайла[:ИмяВыходногоФайла] [--outdir ИмяДиректории] — Пакетная обработка файлов с использованием режима --headless. Если --outdir (директория куда будут писаться файлы) не указан, тогда текущая рабочая директория используется как ИмяДиректории. Если --convert-to используется больше чем один раз, имеет силу последнее значение ИмяФильтраВыходногоФайла[:ИмяВыходногоФайла]. Если --outdir используется больше одного раза, учитывается только последнее значение.
Примеры использования:
--convert-to pdf *.doc
--convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
--convert-to "html:XHTML Writer File:UTF8" *.doc
--convert-to "txt:Text (encoded):UTF8" *.doc
К сожалению, в настоящее время нет простой возможности узнать все возможные значения фильтров. По этому, использование этого флага затруднено, не смотря на его потенциальную пользу.
--print-to-file [--printer-name ИмяПринтера] [--outdir ИмяДиректории] — Пакетная печать файлов в файл. Если --outdir не указана, тогда тогда текущая рабочая директория используется как ИмяДиректории. Если --printer-name или --outdir используется несколько раз, только последнее из них будет учитываться. Также, ИмяПринтера аргумента --pt переключает интерфейс для --printer-name.
--cat — Показывает содержимое файлов на консоль, аргумент --headless используется по умолчанию. Не может использоваться с аргументом --convert-to.
-env:<Переменная>[=<Значение>] — Устанавливает переменную начальной загрузки. Например: установить пользовательский профиля, используемый не по умолчанию, можно следующим образом:
-env:UserInstallation=file:///tmp/test
К сожалению, в настоящее время нет лёгкого способа получить все возможные переменные для этого флага.

Игнорируемые переключатели

Эти аргументы используются в основном для тестов программного обеспечения.
-psn — Игнорируется (только для MacOS X)
-Embedding — Игнорируется (связан с COM+; только для Windows)
--nofirststartwizard — Ничего не делает, введён только для обратной совместимости.
--protector {arg1} {arg2} — Используется только в юнит-тестах и должен иметь два аргумента.

Дополнительная литература и источники: