问题
有没有办法通过命令行指定在PDF 生成中libreoffice
使用而不需要任何用户交互?Cambria
Calibri
语境
我正在使用这个命令:
libreoffice --headless --invisible --convert-to pdf --outdir images/output/ images/Mockups.pptx
或者这个:
unoconv -f pdf -o images/output/ images/Mockups.pptx
在运行的机器中自动 转换PPTX
为。PDF
virtualbox
vagrant
ubuntu/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