我想运行一个脚本以非交互方式在 Scribus 中进行一些 PDF 操作,但我找不到文档来明确说明这是否可行,如果可行,如何操作。
小智 5
这是可能的,但是您需要“非稳定”的 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
Run Code Online (Sandbox Code Playgroud)
请注意,这是仅适用于 Scribus 1.5.2 的建议语法。您可能必须在其他版本的 Scribus 上以不同方式格式化 python 脚本的参数。另请注意,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)
Run Code Online (Sandbox Code Playgroud)