Je voudrais exécuter un script pour faire de la manipulation de PDF dans Scribus de manière non interactive, mais je ne trouve pas de documentation permettant de dire définitivement si cela est possible, et si oui, comment.
Réponses
Trop de publicités?C'est possible, mais vous avez besoin de la version "non-stable" de Scribus >= 1.5.1 (il s'agit d'une version de développement - pour tous les utilisateurs futurs, utilisez la version stable de Scribus >= 1.6 lorsqu'elle sera disponible) pour lancer Scribus avec un script.
J'ai dû le compiler à partir des sources sous Debian.
De plus, l'option --no-gui de Scribus ne semble pas fonctionner (à partir de la version 1.5.2). xvfb-run
pour le cacher "hors écran".
J'utilise &> /dev/null
pour évacuer toutes les informations de débogage imprimées sur stderr, qui sont trop bruyantes pour être utiles. Mais vous voudrez désactiver cela lorsque vous ferez fonctionner votre script initialement.
sudo apt-get install xvfb
xvfb-run scribus --no-gui --no-splash -py scribus2pdf.py -o OUTPUT.pdf -- INPUT.sla &> /dev/null
Note Il s'agit d'une proposition de syntaxe fonctionnant uniquement avec Scribus 1.5.2. Vous devrez peut-être formater les arguments pour le script Python différemment sur d'autres versions de Scribus. Notez également que Scribus utilise Python 2, et non 3.
Note Les fichiers enregistrés dans Scribus 1.5 ne sont PAS rétrocompatibles avec Scribus 1.4.
Voici mon scribus2pdf.py
# Requires Scribus >= 1.5.1
# Tested on Scribus 1.5.2
# Usage:
# scribus --no-gui --no-splash -py scribus2pdf.py -o OUTPUT.pdf -- INPUT.sla &> /dev/null
# To hide the gui properly, prefix the above with xvfb-run
import sys
import getopt
import scribus
try:
opts, args = getopt.getopt(sys.argv[1:],"o:")
except getopt.GetoptError as e:
print(e)
sys.exit(1)
for opt, arg in opts:
if opt == "-o":
dest = arg
if not dest: sys.exit(1)
if scribus.haveDoc() :
pdf = scribus.PDFfile()
pdf.file = dest
pdf.save()
else:
print("Expected input")
sys.exit(1)