Category:Scripts

Other languages: Polski (pl) Portuguese (pt_BR)

= Scripter =

Note: The new script engine "ScripterNG" is currently being integrated into Scribus. The next steps will be:
 * get the script engine to work (should already be ok)
 * get the editor to work (i'm stuck there)
 * revise the structure of the API
 * add new functions to the API

Scripter NG non-complete documentation about architecture

Here ist documentation about the current scripting component in Scribus:


 * Scripter API -- Routines which can be used in scripts to control Scribus
 * Databases -- Scripts can interact with database software like MySQL or SQLite
 * Alessandro Rimoldi's blog series on scripter functions - a_l_e's blog

This wiki is capable of letting users download raw code embedded into the pages. Here is how: - Wikitext for Raw Code Download

Pure Python Functions
The open function is a pure python function and does not involve any Scribus code. Here are some pages with advices on how to handle unicode file names in python:

- http://docs.python.org/tutorial/inputoutput.html - http://www.evanjones.ca/python-utf8.html - http://boodebr.org/main/python/all-about-python-and-unicode

The string returned by the Scribus fileDialog function is always Unicode UTF-8 encoded.

If file is not closed after python error within Scribus: This is up to you to handle python exceptions, Scribus cannot do that in your place

Script snippets
Needs some snippets

This section contains snippets you can use to create your own scripts.

It features:


 * reading a file
 * updating a status bar
 * selecting a frame
 * pausing the screen update

Script Template
Here is a script template with all setups. Use it as a starting point for writing your own script, fill in your application specific code. script template main. There is also a template called boilerplate.py within Scribus Script directory.

Iterate over all elements on a page
page = 1 pagenum = scribus.pageCount content = [] while (page <= pagenum): scribus.gotoPage(page) d = scribus.getPageItems for item in d:       // do something page += 1

Get content like text from a frame
content = [] d = scribus.getPageItems for item in d:   if (item[1] == 4): contents = scribus.getAllText(item[0]) if (contents in content): contents = 'Duplication, perhaps linked-to frame' content.append(contents) elif (item[1] == 2): imgname = scribus.getImageFile(item[0])

ITEM TYPE
 * ItemType1 = 1,
 * ImageFrame = 2,
 * ItemType3 = 3,
 * TextFrame = 4,
 * Line = 5,
 * Polygon = 6,
 * PolyLine = 7,
 * PathText = 8,
 * LatexFrame = 9,
 * Multiple = 99

Auto-Output all Scripter Commands
From Scribus User http://meiradarocha.jor.br Mailinglist Feb. 2012 d = dir(scribus) for j in d:  try: exec 'res = '+j+'.__doc__' if res[0:5] == 'float': print '\nCONSTANT:\n',j,'\nVALUE: float' exec 'print '+j+'\n' elif res[0:5] == 'int(x':          print '\nCONSTANT:\n',j,'\nVALUE: integer'           exec 'print '+j+'\n'       elif res[0:5] == 'tuple':           print '\nTUPLE:\n',j,'\nVALUE:'           exec 'print repr('+j+')\n'       elif res[0:4] == 'str(': print '\nSTRING:\n',j,'\nVALUE:' exec 'print repr('+j+')\n' else: print '\FUNCTION:\n'+j+'\n\nSINTAX:' print res except: pass

Image Manipulation

 * Objects: Images -- Example Scripts that manipulate images in a Scribus document

Basic scripts
Scripts which give you ideas how you can solve your tasks.


 * Poor man's mail merge
 * Enlarge2Page - Enlarge an object to the size of the page.
 * Making Guides at an Object's Borders

Full functional scripts
Scripts that are ready for achieving specific tasks


 * Export all text from a Scribus file
 * Resize selected objects
 * Import XML and apply styles
 * Align to the left page margin (after adding a new page in a double page document)
 * Bullets Make bulleted list
 * Bullets and numbered lists
 * Scribus Generator Extend Scribus with Mail Merge functionality
 * Image crop, resize and CMYK conversion. Save and reload in TIFF format
 * Image crop, resize and color conversion GUI
 * Apply basic ligatures to a document
 * Import CSV Data
 * Automatic story formatting
 * Clean-up the imported text based on the Slovak typographic rules

Scripting new Scribus' functions
Scripts which sketch new features which may be included in future releases of Scribus


 * Adjust the text frame size according to various factors

Extension scripts and PyQt

 * Extension script discussion
 * Experimental PyQt projects

Python issues

 * Known Scripter Issues

= Other =
 * Extension_script_repository
 * Web optimised PDF &mdash; learn how to minimize PDF size, make your life easier with the included Perl script (runs outside of Scribus)
 * Imagemagick Imposition – a bash script doing simple imposition of PNG files exported from Scribus
 * Printing_4-up_tickets_to_hard_copy_printer Shows a) automatic numbering in text boxes and b) hard-copy printing from script
 * Using createParagraphStyle