Salut à tous ! Vous avez un fichier PPTX rempli de texte et d’images que vous souhaitez convertir en PDF, mais vous ne voulez pas le faire manuellement sur Windows ? Pas de souci, je vais vous montrer comment faire ça avec un script ou un programme externe. Voici quelques méthodes pour y parvenir.
En Java
Malheureusement, en Java, ce n’est pas si simple. Avec Apache POI, vous ne pouvez pas exporter le texte directement, seulement tout convertir en image. Et certains formatages, comme le texte sur plusieurs colonnes, ne fonctionnent pas bien. Il existe une bibliothèque appelée « Aspose » qui peut théoriquement le faire, mais elle coûte une fortune.
En Python
En Python, la méthode la plus simple est de créer un objet « Powerpoint.Application » avec la bibliothèque « comtypes ». Mais attention, cela ne fonctionne que sous Windows.
Sous Linux
Pour les utilisateurs de Linux, vous pouvez exporter un PPTX en PDF avec LibreOffice en mode headless (sans interface graphique) :
Dans votre terminal, tapez :
libreoffice --headless --convert-to pdf:writer_pdf_Export in.pptx
Il est impératif que les polices utilisées dans votre présentation soient présentes sur le système. Pour installer une police, suivez ces étapes :
- Copiez la police dans
/usr/share/fonts/truetype/
. - Mettez à jour le cache des polices avec la commande
fc-cache
. - Vérifiez que la police est bien installée avec la commande
fc-list | grep ma_police
.
Appeler LibreOffice en mode headless comme ça le chargera en mémoire puis le fermera après la conversion, ce qui peut prendre un peu de temps.
Optimisation avec Unoserver
Pour optimiser le processus, vous pouvez utiliser Unoserver, un outil qui garde LibreOffice en mémoire pour des conversions plus rapides. Voici comment faire :
- Lancez le serveur qui chargera LibreOffice en mémoire :
Dans votre terminal, tapez :
unoserver
- Appelez l’instance en utilisant le bon port :
Dans votre terminal, tapez :
unoconvert in.pptx out.pdf
Assurez-vous d’utiliser une version récente de LibreOffice pour que les marges soient correctement conservées.
Exécution de LibreOffice depuis Python
Vous pouvez également exécuter LibreOffice depuis un script Python. Voici un exemple de script :
En python
import os
from subprocess import Popen
def convert_pptx_to_pdf(input_pptx, output_pdf):
libreoffice_exec = "libreoffice"
command = [libreoffice_exec, "--headless", "--convert-to", "pdf", "--outdir", os.path.dirname(output_pdf), input_pptx]
process = Popen(command, stdout=None, stderr=None)
process.wait()
input_pptx = "/chemin/vers/le/fichier.pptx"
output_pdf = "/chemin/vers/le/fichier.pdf"
convert_pptx_to_pdf(input_pptx, output_pdf)