Command line scripts
Jump to navigation
Jump to search
Scribus 1.5.1 allows to use the command line to launch scribus with a script to be launched at start. Various options enable to specify the behaviour
- -py <scriptfilename.py> or --python-script <scriptfilename.py> : specifies the name of the script to be launched
- -g : No GUI. Scribus wont display any dialogs or windows and will exit once the script is ended
- --python-arg [list of flags or argument-names and their values] : allows to pass arguments to the script. This option has to be the last on the command line.
Example of command line script
Create the following 'data.py' script file :
import scribus scribus.openDoc('mydoc.sla') scribus.setText('Name', 'Text1') # get 'Name' and 'Address' from database scribus.setText('Address', 'Text2') pdf = scribus.PDFfile() pdf.file = 'output1.pdf' pdf.save()
Then run scribus as follow:
scribus --python-script data.py
and you have your output1.pdf file created!
Example of command line script with argument
Debuging
See also this http://bugs.scribus.net/file_download.php?file_id=7530&type=bug
Print depth of text
Script that receives a scribus filename on the command line, opens it, does some computation on the first text frame and prints the result as the depth of the text.
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Return the depth of the text in the file sample.txt Run with the command line scribus -g -py storydeptharg.py --python-arg -storyfile sample.txt depthtemplate.sla - sample.txt is the text file to measure. - depthtemplate.sla is a document with a single, empty text frame. Tested with scribus 1.5.0 Author: William Bader 11Aug14 wb initial version 15Dec14 wb get the file name from STORYFILE 19Aug15 wb get the file name from the command line 13Sep15 change comment to fit merged version syntax for arguments """ # check that the script is running from inside scribus try: from scribus import * except ImportError: print 'This script only runs from within Scribus.' sys.exit(1) # get the os module try: import os except ImportError: print 'Could not import the os module.' sys.exit(1) # get the sys module try: import sys except ImportError: print 'Could not import the sys module.' sys.exit(1) def main(argv): # The first text frame of the current document defines the style try: storyfile = "" i = 1; while i < len(argv): if argv[i] == "-storyfile": storyfile = argv[i+1] i = i + 1 if storyfile == "": print 'Warning: -storyfile not given, checking environment' storyfile = os.environ['STORYFILE'] except: print 'Error: Pass the story file with the --python-arg-storyfile argument or the STORYFILE environment variable' return try: storytext = open(storyfile, 'r').read() except: print 'Error: Story file "', storyfile, '" not found.' return try: deselectAll() selectObject('Text1') except: print 'Error: The document does not have an object called Text1.' return try: setText(storytext) except: print 'Error: The document does not have a text frame.' return try: ov = textOverflows() width, depth = getSize() if ov: baddepth = depth gooddepth = 100 else: baddepth = 0 gooddepth = depth while baddepth < gooddepth: trydepth = (baddepth + gooddepth) / 2 sizeObject(width, trydepth) tryov = textOverflows() if tryov: baddepth = trydepth + 0.0001 else: baddepth = baddepth + 0.0001 gooddepth = trydepth sizeObject(width, gooddepth) print 'The depth is ', str(gooddepth) except: print 'Error: not a text frame.' # start the script if __name__ == '__main__': if haveDoc(): main(sys.argv) else: print 'Error: You need to have a document open before you can run this script succesfully.'