2 votes

Exécuter Scribus script sans GUI

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.

5voto

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)

0voto

user322483 Points 44

Actuellement, cela n'est possible que via le script script. Scribus démarrera toujours l'interface utilisateur, donc sur un serveur sans tête, vous devez installer Xvfb ou Xdummy.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X