Führen Sie das Scribus-Skript ohne GUI aus

888
l0b0

Ich möchte ein Skript ausführen, um die PDF-Bearbeitung in Scribus nicht interaktiv durchzuführen, aber ich kann keine Dokumentation finden, um definitiv zu sagen, ob dies möglich ist und wenn ja, wie.

1

2 Antworten auf die Frage

3
Ben Sarah Golightly

Dies ist möglich, aber Sie benötigen den "nicht stabilen" Scribus> = 1.5.1 (dies ist eine Entwicklungsversion - verwenden Sie in der Zukunft den stabilen Scribus> = 1.6, wenn es out ist), um Scribus mit einem Skript zu starten.

Ich musste dies aus Quellen auf Debian zusammenstellen.

Außerdem scheint die Option --no-gui von scribus (ab 1.5.2) nicht wirklich zu funktionieren, daher verwende ich sie xvfb-run, um sie "off screen" zu verbergen.

Ich verwende &> /dev/nullalle an stderr gedruckten Debugging-Informationen, die zu laut sind, um nützlich zu sein. Sie sollten dies jedoch deaktivieren, wenn Sie Ihr Skript anfangs zum Laufen bringen.

sudo apt-get install xvfb xvfb-run scribus --no-gui --no-splash -py scribus2pdf.py -o OUTPUT.pdf -- INPUT.sla &> /dev/null 

Beachten Sie, dass dies eine vorgeschlagene Syntax ist, die nur mit Scribus 1.5.2 funktioniert. Sie müssen möglicherweise die Argumente für das Python-Skript in anderen Versionen von Scribus anders formatieren. Beachten Sie auch, dass Scribus Python 2 verwendet, nicht 3.

Hinweis Dateien, die in Scribus 1.5 gespeichert sind, sind NICHT abwärtskompatibel mit Scribus 1.4

Hier ist meins 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) 
0
user322483

Derzeit ist dies nur über das Python-Startskript möglich. Scribus startet weiterhin die Benutzeroberfläche. Auf einem Headless-Server müssen Sie Xvfb oder Xdummy installieren.