更改 2 个或多个 LibreOffice 文档以具有完全相同的样式/格式

14 style libreoffice

假设我有一个目录,其中包含.rtf我使用 LibreOffice Writer 编辑的大约 100 个文件。

我希望该目录中的所有文件都具有完全相同的基本富文本样式指令,例如:

* font-family: Ubuntu             # All text in all files is now Ubuntu;
* font-size: 12px                 # All text in all files is now 12px big;
h1: 28px                          # All h1's are now 28px big;
if font-size: 18px {make it 22px} # All text with font-size 18px is now 22px;
Run Code Online (Sandbox Code Playgroud)

等等......所以,基本上我想一次更改所有文件。这种“批量造型”可能吗?

也许以某种方式使用 CLI 是可能的?

Win*_*nix 4

使用 LibreOffice 工具而不是命令行

当您拥有的只是命令行工具时,一切看起来都像是命令行问题。我决定使用 LibreOffice 宏来编写这个答案:

  1. 使用命令行循环在“无头”环境中处理每个 Writer 文档。
  2. 运行宏来更改.rtf(富文本格式)Writer 文档文件。
  3. 宏保存文件并退出
  4. 循环回到1。

创建测试数据

创建两个或多个包含以下内容的文件:

富文本2.png

创建~/Downloads/copy-rtf.sh包含以下内容的脚本:

cp ~/Documents/*.rtf ~/Downloads
Run Code Online (Sandbox Code Playgroud)

使用标记为可执行文件

chmod a+x ~/Downloads/copy-rtf.sh
Run Code Online (Sandbox Code Playgroud)
  • 在开发和测试期间,修改文件的宏将针对目录*.rtf运行。~/Downloads
  • 在每次测试类型cd ~/Downloads和运行之前./copy-rtf.sh
  • 输出完美后,它们将被复制回 live 目录。

Downloads使用该目录的原因是:

  • 每个人都有一个~/Downloads
  • 它会定期添加并定期手动清空
  • 它比/tmp/重新启动后可能不会保留的目录更永久。

在无头环境中运行宏

使用此Stack Exchange 答案,从命令行运行 Libreoffice Writer 并向其传递一个全局宏名称以执行:

cp ~/Documents/*.rtf ~/Downloads
Run Code Online (Sandbox Code Playgroud)

如果上述方法不起作用,可以尝试另一种方法:

soffice "macro:///Standard.SaveCSV.Main" $1
Run Code Online (Sandbox Code Playgroud)

安装Java运行环境

要运行宏,您需要安装 Java 运行时环境 (JRE)。开发者的网页上有手动下载和安装的说明。

然而,这个 AU 问答: https: //askubuntu.com/a/728153/307523表明它很简单:

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer oracle-java8-set-default
Run Code Online (Sandbox Code Playgroud)

我尝试了 AU 问答方法,在添加 PPA 的第一步之后,会出现一个包含附加信息的启动屏幕。最有帮助的是在 Debian 系统上设置 JRE 8 的链接。

安装 JRE 8 的第三步要求您使用TabEnter接受许可协议。在安装过程中最繁重的部分,您的机器将暂停几分钟。

现在打开 LibreOffice 并选择工具->选项-> LibreOffice ->高级并设置此屏幕:

LO JRE8 高级设置.png

单击以下选项:

  • 使用Java运行环境
  • 甲骨文公司1.8.0_161
  • 启用宏录制(实验)
  • 单击“确定”
  • 系统会要求您重新启动,请单击“立即重新启动”。

LibreOffice Writer 宏

该宏将通读整个文档并且:

  • 将字体名称更改为 Ubuntu。
  • 如果标题 1 将字体大小设置为 28
  • 否则如果字体大小为 18 设置为 22
  • 否则将字体大小设置为 12

该宏将保存文档并退出 LibreOffice Writer。

关闭对话框

保存文件并出现此对话框:

LO Writer 关闭 RTF 对话框.png

如屏幕所示关闭此消息。如果打开此选项,宏可能无法正常运行。

宏观内容

我花了几天时间尝试使用“工具”->“宏”->“记录宏”->“基本”来记录宏。起初它看起来很有希望,但录制的宏行为不一致,不得不放弃手写的基本宏。在 Stack Overflow 上找到了专家的帮助,帮助我进行基本的编码。结果如下:

chmod a+x ~/Downloads/copy-rtf.sh
Run Code Online (Sandbox Code Playgroud)