Adding 'DRAFT' to a document: Difference between revisions
No edit summary |
No edit summary |
||
Line 62: | Line 62: | ||
setUnit(u) # return to original document units | setUnit(u) # return to original document units | ||
setActiveLayer(al) # return to the original active layer | setActiveLayer(al) # return to the original active layer | ||
</syntaxhighlight> | |||
===A note on style=== | |||
The favored way to use a python script in Scribus is to use the command | |||
<syntaxhighlight lang="python"> | |||
import scribus | |||
</syntaxhighlight> | |||
instead of | |||
<syntaxhighlight lang="python"> | |||
from scribus import * | |||
</syntaxhighlight> | |||
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 | |||
<syntaxhighlight lang="python"> | |||
scribus.setActiveLayer(al) | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 16:19, 10 February 2015
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 [{{#file: draft.py}} draft.py]
'''
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.
'''
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
import scribus
instead of
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
scribus.setActiveLayer(al)