使用命令行中的值填充现有的 LibreOffice 文档

Fill an existing LibreOffice document with values from the command line

我 运行 一个 bash 脚本,它在结算结束时生成 PDF 运行。我曾经用 LaTeX 做到这一点,但用户要求更像 MS Office 的解决方案。所以我正在考虑使用 LibreOffice 文档并在命令行上使用 LibreOffice 来生成 PDF。这样可行。但是我不知道如何在生成 PDF 之前将我需要更改的值(例如地址和帐单信息)注入该文档。

假设 example.odt 文档包含以下文本:

Dear $fist_name,

you own us $amount USD.

Regards
xyz

因为从 Bash 脚本编辑 example.odt 并不是很容易,我正在寻找另一种方法来为 $first_name$amount 注入值。

最好的方法是什么?

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