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
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
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
Beginners Scripts
Link to Script | Scripter commands demonstrated |
---|---|
newDocument, createRect, setCornerRadius, setLineWidth, setFillColor, setLineColor, saveDocAs | |
newDocument, createLine, setLineWidth, setLineColor, setFillShade, createRect, saveDocAs | |
newDocument, createLine, setLineWidth, setLineColor, zoomDocument, saveDocAs | |
newDocument, createEllipse, setLineWidth, setFillColor, setFillShade, saveDocAs, currentPage, setHGuides, messageBox, statusMessage, progressReset | |
haveDoc, createLayer, getActiveLayer, setActiveLayer, createText, setUnit, setText, setTextColor, setFontSize, rotateObject | |
haveDoc, valueDialog, getUnit, setUnit, getPageSize, getPageMargins, | |
defineColor, createEllipse, setLineWidth, setLineColor, setFillColor, createLine, getPageSize, createRect | |
valueDialog, getColor, getLayers, createLayer, setActiveLayer, setHGuides, setVGuides, getHGuides, getVGuides, createText, setTextColor, insertText, setFontSize, setLineSpacing, defineColor, createRect, groupObjects, createLine, setLineColor, setLineWidth, createEllipse, haveDoc, messageBox | |
haveDoc, getUnit, setUnit, getPageSize, getPageMargins, setMargins, messageBox, statusMessage, progressReset | |
haveDoc, setUnit, valueDialog, createLine, setLineWidth, setLineColor, setFillColor | |
haveDoc, createLine, setLineWidth, setLineColor, setFillColor, createText, setFont, setFontSize, setTextAlignment, valueDialog, messageBox, docChanged | |
newDoc, createLine, setLineWidth, setLineColor, setFillColor, createLayer, setActiveLayer, createText, setFont, setFontSize, setTextAlignment, selectText, setTextDistances, valueDialog, messageBox | |
haveDoc, valueDialog, createLine, setLineWidth, setLineColor, setFillColor, createText, setTextColor, setText, setTextAlignment, setFont, setFontSize, rotateObject | |
haveDoc, valueDialog, setUnit, createLine, setLineWidth, setLineColor, setFillColor, createText, setTextColor, setText, setTextAlignment, setFont, setFontSize | |
fileDialog, haveDoc, setUnit, valueDialog, createLine, setLineWidth, setLineColor, setFillColor, createPolyLine | |
valueDialog, messageBox, haveDoc, importSVG – much of the script involves mathematical calculations | |
getPageSize, fileDialog, createImage, setScaleImageToFrame, setFillColor, setLineColor, getImageScale, sizeObject, haveDoc, messageBox This is an old script (Scribus 1.3.3.3), so be sure to check the precise names of commands. If you find errors, let us know or edit the wiki page to correct. | |
messageBox, createLine, setLineColor, haveDoc, statusMessage, progressReset There is a minor usage of Scribus commands here, but it does show how to set up a Tkinter dialog for multiple variable entry. | |
newDoc, newPage, createText, setText, setTextAlignment, setFont, setFontSize This is almost a script fragment even though it could work on its own. What it shows is the basic operation to import information from a simple structured text file and incorporate into a document. Could be adapted for mail merge, for example. | |
haveDoc, selectionCount, getSelectedObject, setScaleImageToFrame, getImageScale, scaleImage, docChanged | |
not sure if this script works | |
haveDoc, selectionCount, getSelectedObject, setProperty, moveObject, docChanged | |
replaceColor, docChanged This is a "script-let" really, but quickly shows how to change or delete colors in a document. No checking for errors. | |
haveDoc, fileDialog, messageBox, pageCount, getPageItems, gotoPage, getAllText, getImageFile | |
valueDialog, messageBox This is a utility that just happens to run in Scribus, using the valueDialog and messageBox to do what the title says. | |
getPageSize, getPageMargins, createText, setFontSize, setTextAlignment, insertText, getColorNames, statusMessage, progressTotal, getColor, progressSet, haveDoc, openDoc, fileDialog, messageBox, getColorsFromDocument, newDocument, setUnit, deleteColor, defineColor, valueDialog, newPage, createRect, setFillColor, setLineColor | |
messageBox, valueDialog | |
| |
haveDoc, selectionCount, messageBox, valueDialog, getSelectedObject, pageCount, currentPage, gotoPage. Also shows use of Python split function for parsing the input from valueDialog. copyObject and pasteObject are new commands that you will only have once you follow the directions to install them into your svn directory and rebuild Scribus. |
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
Scripting new Scribus' functions
Scripts which sketch new features which may be included in future releases of Scribus
Extension scripts and PyQt
Python issues
Other
- Extension_script_repository
- Web optimised PDF — 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
Pages in category "Scripts"
The following 103 pages are in this category, out of 103 total.
A
- A Standard Form with Barcodes and Custom Entries
- Adding 'DRAFT' to a document
- Adjust a text frame to fit its content
- Advanced Graphing
- Align an Image in its Frame
- Align to left page margin
- Apply basic ligatures to a document
- Applying a Frame Style
- Automatic import of images from a directory using a script
- Automatic import of images: Versions not requiring Tkinter
- Automatic story formatting
- Automatically Creating a Graph
- Autoquote2
B
C
- Centering text vertically in a frame
- Clean-up the imported text based on the Slovak typographic rules
- Color Chart
- Convert all colors to CMYK
- Convert RGB imported colors to CMYK
- Convert RGB value to Hex
- Convert Typewriter Quotes to Typographic Quotes
- CopyObject() and pasteObject()
- Create tables out of csv data
- Creating a Graph, Part 2
- Creating a TOC with Scripter
- Creating Markers - another version
- Creating Markers for positioning and cutting
D
E
G
H
I
- Image crop, resize and CMYK conversion. Save and reload in TIFF format
- Image crop, resize and color conversion GUI
- Image Wizard Advanced
- Image Wizard: Scale and Align an Image
- Imagemagick Imposition
- Import an image in the way office-programs do
- Import CSV Data
- Importing addresses from a text file
- Infobox in column
M
P
S
- Scale an Image to Fill a Frame Proportionally
- Scrambling Text
- Scribus Generator
- Scribus xhtml using Scripter
- Scribus XML using Scripter
- Script Resize selected objects
- Scripter API
- Scripter Architecture
- Scripter Security
- Scripter/Databases
- Scripter/Images
- Scripter/Snippet/Main
- ScripterNG
- Setting Text Distances from a Script
- Shifting All Page Objects
- Split Image Across Gutter