Заполните существующий документ LibreOffice значениями из командной строки - PullRequest
0 голосов
/ 12 мая 2019

Я запускаю скрипт bash, который генерирует PDF в конце биллингового прогона.Раньше я делал это с LaTeX, но пользователи просят более похожее на MS Office решение.Итак, я думаю об использовании документа LibreOffice и использовании LibreOffice в командной строке для создания PDF.Это работает.Но я понятия не имею, как вставить значения, которые мне нужно изменить (например, адрес и платежную информацию), в этот документ, прежде чем я смогу сгенерировать PDF.

Давайте предположим, что документ example.odt содержит этот текст:

Dear $fist_name,

you own us $amount USD.

Regards
xyz

Поскольку example.odt не очень легко редактировать из сценария Bash, я ищу другой способ ввода значений для $first_name и $amount.

Чтолучший способ сделать это?

1 Ответ

1 голос
/ 13 мая 2019

Файл LibreOffice - это zip-архив, который можно распаковать с помощью

unzip old.odt -d example
cd example

Содержимое файла находится в файле content.xml.Это можно изменить с помощью sed или любого другого инструмента.После этого файл .odt должен быть создан снова:

zip -r ../new.odt .

После этого PDF-файл можно создать с помощью этой команды (путь из OS X):

/Applications/LibreOffice.app/Contents/MacOS/soffice --headless 
--convert-to pdf:writer_pdf_Export --outdir ~/Desktop/ ~/Desktop/new.odt
...