Adding 'DRAFT' to a document: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Scripting Index}} | {{Scripting Index}} | ||
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. | 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.'' | ''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.'' | ||
Revision as of 16:09, 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]
#!/usr/bin/env python
'''
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