Execute o script Scribus sem GUI

1

Gostaria de executar um script para fazer alguma manipulação de PDF no Scribus não interativamente, mas não consigo encontrar documentação para dizer definitivamente se isso é possível, e se sim, como.

    
por l0b0 28.07.2010 / 18:37

2 respostas

3

Isso é possível, mas você precisa do Scribus não-estável "= 1.5.1 (esta é uma versão de desenvolvimento - para qualquer um no futuro, use o Scribus estável > = 1.6 quando estiver fora) para iniciar Scribus com um script.

Eu tive que compilar isso a partir do código fonte no Debian.

Adicionalmente, a opção --no-gui do scribus na verdade não parece funcionar (a partir de 1.5.2), então eu uso xvfb-run para escondê-lo "fora da tela".

Eu uso &> /dev/null para enviar todas as informações de depuração impressas para stderr, o que é muito barulhento para ser útil. Mas você vai querer desativar isso quando começar seu script a funcionar inicialmente.

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

Nota esta é uma sintaxe proposta trabalhando apenas com o Scribus 1.5.2. Você pode ter que formatar os argumentos para o script python de forma diferente em outras versões do Scribus. Note também que o Scribus usa o Python 2, não o 3.

Arquivos de anotação salvos no Scribus 1.5 NÃO são retrocompatíveis com o Scribus 1.4

Aqui está o meu 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)
    
por 18.01.2017 / 00:46
0

Atualmente isso só é possível através do script de inicialização do Python. O Scribus ainda irá iniciar a UI, então em um servidor headless você precisa instalar o Xvfb ou o Xdummy.

    
por 13.05.2014 / 14:43