![文档字体替换(LibreOffice、MS Office)](https://linux22.com/image/1494492/%E6%96%87%E6%A1%A3%E5%AD%97%E4%BD%93%E6%9B%BF%E6%8D%A2%EF%BC%88LibreOffice%E3%80%81MS%20Office%EF%BC%89.png)
在我的办公室,我们遇到了一个微妙的小问题,品牌形象小组决定对我们的图形资料进行一些更改。这导致的一件事是将文档字体从“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”中的空格。