我想运行一个脚本来进行一些 PDF 操作在 Scribus 中非交互地实现,但我找不到文档来明确说明这是否可行,如果可以,如何实现。
答案1
这是可能的,但是您需要“非稳定”的 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 的建议语法。在其他版本的 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)
答案2
目前,这只能通过 Python 启动脚本实现。Scribus 仍将启动 UI,因此在无头服务器上,您需要安装 Xvfb 或 Xdummy。