Я хотел бы запустить сценарий для выполнения некоторых манипуляций с PDF в Scribus неинтерактивно, но я не могу найти документацию, в которой бы точно указывалось, возможно ли это, и если да, то как.
2 ответа
Это возможно, но вам нужен «нестабильный» 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)
В настоящее время это возможно только через скрипт запуска Python. Scribus по-прежнему будет запускать пользовательский интерфейс, поэтому на автономном сервере вам нужно установить Xvfb или Xdummy.