Запустить скрипт Scribus без графического интерфейса

734
l0b0

Я хотел бы запустить сценарий для выполнения некоторых манипуляций с PDF в Scribus неинтерактивно, но я не могу найти документацию, в которой бы точно указывалось, возможно ли это, и если да, то как.

1

2 ответа на вопрос

3
Ben Sarah Golightly

Это возможно, но вам нужен «нестабильный» Scribus> = 1.5.1 (это версия для разработчиков - всем, кто в будущем использует стабильный Scribus> = 1.6, когда он выйдет), чтобы запустить Scribus со скриптом.

Я должен был скомпилировать это из источника на Debian.

Кроме того, опция scribus --no-gui фактически не работает (по состоянию на 1.5.2), поэтому я использую ее, xvfb-runчтобы скрыть ее «за кадром».

Я использую, &> /dev/nullчтобы передать всю отладочную информацию, напечатанную в stderr, что слишком шумно, чтобы быть полезным. Но вы захотите отключить это, когда ваш скрипт будет работать изначально.

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

Обратите внимание, что это предлагаемый синтаксис, работающий только с Scribus 1.5.2. Возможно, вам придется по-разному форматировать аргументы для скрипта Python в других версиях Scribus. Также обратите внимание, что Scribus использует Python 2, а не 3.

Примечание Файлы, сохраненные в Scribus 1.5 не совместимы с Scribus 1.4

Вот мой 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

В настоящее время это возможно только через скрипт запуска Python. Scribus по-прежнему будет запускать пользовательский интерфейс, поэтому на автономном сервере вам нужно установить Xvfb или Xdummy.

Похожие вопросы