pptx 到 pdf 转换时 LibreOffice 命令行字体替换

pptx 到 pdf 转换时 LibreOffice 命令行字体替换

问题

有没有办法通过命令行指定在PDF 生成中libreoffice使用而不需要任何用户交互?CambriaCalibri

语境

我正在使用这个命令:

libreoffice --headless --invisible --convert-to pdf --outdir images/output/ images/Mockups.pptx

或者这个:

unoconv -f pdf -o images/output/ images/Mockups.pptx

在运行的机器中自动 转换PPTX为。PDFvirtualboxvagrantubuntu/trusty64

Vagrant文​​件:

config.vm.box = "ubuntu/trusty64"
[...]
config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get update
    sudo apt-get install -y unoconv imagemagick default-jdk ant docbook-xsl fop libxml2-utils xsltproc php5-cli
SHELL

原文pptx是由使用 Windows 的人编辑的,并使用了该Calibri字体。我不能要求他们使用不同的设置或字体。

由于Calibri字体不在trusty分布中,PDF因此所做的转换libreoffice会弄乱布局。

我读到的Cambria公制相当于Calibri

因此,如上所述,问题是如何libreoffice通过命令行指示某种字体替换。

答案1

我们在 Alfresco 下使用 LibreOffice 时也遇到了类似的问题(同样无需头显)。安装 ChromeOS 字体包 Carlito(相当于 Calibri)和 Caladea(相当于 Cambria)后解决了这个问题,使用此处的提示:https://wiki.debian.org/SubstitutingCalibriAndCambriaFonts。更改 LO 中的映射没有任何作用,无论是在无头系统还是在桌面系统上 - 只有安装软件包才能解决问题。(为了完整起见,我们已将映射的条目添加到 LO registrymodifications.xcu,但这在任何一个平台上都没有任何作用 - 似乎编辑 conf.d 下的文件优先)。

安装的软件包有:

注:下面的$ 是系统提示符……

Linux:

$ sudo apt-get 安装 fonts-crosextra-carlito fonts-crosextra-caladea

FreeBSD:(提示:先进行搜索,因为名称可能会随着时间而改变)

$ pkg 搜索 cros

$ sudo pkg 安装 crosextrafonts-caladea-20130214_1 crosextrafonts-carlito-20130920_2

您可能需要运行:

$ fc-缓存-r

检查:

$ fc-match Calibri

Carlito-Regular.ttf:“Carlito”“常规”

$ fc-match Cambria

Caladea-Regular.ttf:“Caladea”“常规”

现在运行完美。

这些安装将创建以下文件,提供所需的字体替换(取决于您的平台):

Linux(Ubuntu 14.x):

/etc/fonts/conf.avail/30-0-google-crosextra-caladea-fontconfig.conf

/etc/fonts/conf.avail/30-0-google-crosextra-carlito-fontconfig.conf

这些是从 /etc/fonts/conf.d 链接的,如下所示:

30-0-google-crosextra-caladea-fontconfig.conf -> ../conf.avail/30-0-google-crosextra-caladea-fontconfig.conf

30-0-google-crosextra-carlito-fontconfig.conf -> ../conf.avail/30-0-google-crosextra-carlito-fontconfig.conf

FreeBSD(10.x):

/usr/local/etc/fonts/conf.avail/30-metric-aliases.conf

...链接阿拉...

/usr/local/etc/fonts/conf.d/30-metric-aliases.conf@ -> /usr/local/etc/fonts/conf.avail/30-metric-aliases.conf

答案2

pptx文件格式只是一个具有不同扩展名的 zip 文件,您可以尝试解压缩它并进行文本替换:

unzip -d tmp Mockups.pptx
find tmp -type f | xargs sed -i 's/Calibri/Cambria/g'
( cd tmp; zip -r ../Mockups2.pptx . )
rm -Rf tmp

相关内容