Difference between revisions of "Adding 'DRAFT' to a document"

From Scribus Wiki
Jump to: navigation, search
m (Geishi ALL THE THINGS! + removed test markup)
Line 51: Line 51:
 
     setActiveLayer("c")
 
     setActiveLayer("c")
  
    T = createText(w/6, 6*h/10 , h, w/2)  # Create the text box
+
#    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
 
     setText(draft, T)                        # Insert the text
 
     setTextColor("gray", T)                  # Set the color of the text
 
     setTextColor("gray", T)                  # Set the color of the text

Revision as of 16:07, 10 February 2015

This article is part of the Scripts series.

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.

If it doesn't work for you, it may have something to do with your default font.

Draft example.png

Save the following code as 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