Adding 'DRAFT' to a document
A script to place a light grey watermark 'DRAFT' on a new layer. Requires an existing document, but can be modified to create a new document if it does not exist.
Note that this script can be run on a Master Page, which allows you to apply this to as many pages as you wish, without needing to run the script again.
If it doesn't work for you, it may have something to do with your default font.
Save the following code as draft.py
#!/usr/bin/env python # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. ''' A script to place a light grey watermark 'DRAFT' on a new layer. Requires an existing document, but can be modified to create a new document if it does not exist uses (See the API in Help->Scribus Manual->For Developers->Scripter API; haveDoc createLayer getActiveLayer setActiveLayer createText setUnit setText setTextColor setFontSize rotateObject Tested on 1.4.3 and A2, A4, A5, Letter. ''' import scribus #from scribus import * # Could be expanded to include localization here draft = "DRAFT" #draft = "ENTWURF" #draft = "BROUILLON" L = len(draft) # The length of the word # will determine the font size defineColor("gray", 11, 11, 11, 11) # Set your own color here if haveDoc(): u = getUnit() # Get the units of the document al = getActiveLayer() # Identify the working layer setUnit(UNIT_MILLIMETERS) # Set the document units to mm, (w,h) = getPageSize() # needed to set the text box size createLayer("c") setActiveLayer("c") # T = createText(w/6, 6*h/10 , h, w/2) # Create the box - here is the original line, which # makes an excessively large frame (see pic above) T = createText(w/6, 6*h/10 , 2h/3, w/5) # Create the box - I think you will find this is better # by making a smaller frame setText(draft, T) # Insert the text setTextColor("gray", T) # Set the color of the text setFontSize((w/210)*(180 - 10*L), T) # Set the font size according to length and width rotateObject(45, T) # Turn it round antclockwise 45 degrees setUnit(u) # return to original document units setActiveLayer(al) # return to the original active layer
A note on style
The favored way to use a python script in Scribus is to use the command
from scribus import *
The reason for this is that the latter method imports all of the Scribus python API into the interpreter, rather unnecessary. However, if you use this preferred method, then your Scribus commands need to use a prefix, for example
This also applies to Scribus constants, for example scribus.UNIT_MILLIMETERS. If you're wondering which commands are those which belong to Scribus, generally speaking anything not highlighted in color above is a Scribus command, so from, import, and len are all basic python commands.