web-dev-qa-db-fra.com

Substitution de polices en ligne de commande LibreOffice lors de la conversion de pptx en pdf

Question

Existe-t-il un moyen de spécifier libreoffice, via la ligne de commande, d'utiliser Cambria pour les occurrences de Calibri dans la génération PDF sans aucune interaction de l'utilisateur?

contexte

J'utilise cette commande:

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

ou celui-ci:

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

convertir automatiquement un PPTX en PDF dans une machine virtualbox lancée avec vagrant et exécutant ubuntu/trusty64.

Vagrantfile:

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

L'original pptx est édité par les utilisateurs de Windows et utilise la police Calibri. Je ne peux pas leur demander d'utiliser des paramètres ou des polices différents.

Comme la police Calibri ne fait pas partie de la distribution trusty, la conversion PDF effectuée par le libreoffice perturbe la mise en page.

J'ai lu Cambria est l'équivalent métrique de Calibri.

Ainsi, comme indiqué, la question est de savoir comment indiquer à libreoffice une certaine substitution de polices via la ligne de commande.

3
Xavi Montero

Le format de fichier pptx est simplement un fichier Zip avec une extension différente, vous pouvez essayer de le décompresser et de le remplacer par du texte:

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
2
krlmlr

Nous avons eu un problème similaire avec LibreOffice sous Alfresco (qui fonctionne aussi sans tête). L'installation des packages de polices ChromeOS pour Carlito (équivalent Calibri) et Caladea (équivalent Cambria) a corrigé le problème en utilisant un indice à partir d'ici: https://wiki.debian.org/SubstitutingCalibriAndCambriaFonts . Changer les mappages dans LO ne faisait rien, ni sur le sans tête ni sur le bureau - seulement l’installation des paquets le résolvait. (Par souci d'exhaustivité, nous avions ajouté les entrées pour les mappages à LO registrymodifications.xcu et cela n'a donné aucun résultat, semble-t-il, l'édition des fichiers sous conf.d a priorité.

Les paquets installés étaient:

Remarque: $ ci-dessous est l'invite du système ...

Linux:

$ Sud apt-get install polices-crosextra-carlito polices-crosextra-caladea

FreeBSD: (Astuce: faites la recherche d'abord car son nom peut changer avec le temps)

$ pkg recherche cros

$ Sudo pkg installer crosextrafonts-caladea-20130214_1 crosextrafonts-carlito-20130920_2

Vous devrez peut-être exécuter:

$ fc-cache -r

Vérifier avec:

$ fc-match Calibri

Carlito-Regular.ttf: "Carlito" "Régulier"

$ fc-match Cambria

Caladea-Regular.ttf: "Caladea" "Régulier"

Fonctionne parfaitement maintenant.

Ces installations créent les fichiers suivants qui donnent les substitutions de polices souhaitées (selon votre plate-forme):

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

Ceux-ci sont liés depuis /etc/fonts/conf.d comme ceci:

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

... lié ala ...

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