文档字体替换(LibreOffice、MS Office)

文档字体替换(LibreOffice、MS Office)

在我的办公室,我们遇到了一个微妙的小问题,品牌形象小组决定对我们的图形资料进行一些更改。这导致的一件事是将文档字体从“Times New Roman”更改为“Georgia”。

这意味着我们有数百个文档需要更改字体。

现在有没有办法通过线路或脚本在 Linux/Libreoffice 或 Windows/MS Office 中替换字体?

也许是这样的:

for i in *.doc; do
  libreoffice --font-substitution input-font="Times New Roman" output-font="Georgia" newfiles/$i $i;
done

我希望你能明白。一种“批量”替换字体的方法:-)

谢谢你的努力!

/保罗

答案1

在您考虑开始之前,需要考虑以下事项:Word 使用样式来设置文本格式。当您从其他撰稿人那里复制一些文本时,只需使用 CTRL V 即可复制他们的样式。查看样式表将显示大量样式。

如果是这种情况,你的一次性改变一切的技巧将不会奏效

为了使此方法有效,您的所有样式都必须基于正常样式。然后,无论您进行何种格式设置,所有文本都必须使用样式。只需手动更改一次字体,此方法就会失败。它甚至会使文档损坏。

另一个问题是,某些样式基于“无”,因此它们与普通样式处于同一级别。每种样式都必须更改。您可以在 VBA 中执行此操作,方法是询问每种样式的格式,然后进行相应的更改。

就我自己而言。我不会这么做。一次处理一个文档。与销售和产品管理讨论最常用的文档,然后从它们开始

答案2

我的 LibreOffice 版本有一个可以用另一种字体替换一种字体的选项,请参阅:Tools>Options...>LibreOffice>Fonts

答案3

谢谢你,ngulam!

您的回答让我进一步寻找命令行解决方案,现在我明白了!

将一堆 Officefile(新的压缩文件,如 DOCX、PPTX、ODT)放在一个目录中。使用副本。不要在原件上运行。然后创建并运行以下 Bash 脚本。

#!/bin/bash

for i in *.*; do

unzip -d tmp $i
find tmp -type f | xargs sed -i 's/"Times New Roman"/Georgia/g'
# find tmp -type f | xargs sed -i 's/"'Times New Roman'"/"Georgia"/g'
cd tmp; zip -r ../$i .
rm -Rf tmp

done

exit0

当脚本完成时,目录中所有文件中的字体“Times New Roman”都将被替换为“Georgia”。

/保罗

PS!将“Times New Roman”替换为“Georgia”时,以“find”开头的第二行代码是必需的,但将“Arial”替换为“Georgia”时则不是。这可能取决于“Times New Roman”中的空格。

相关内容