1

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

2 ответа2

3

Это возможно, но вам нужен «нестабильный» 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .