Posted at: 9:22 AM on by Muhimbi

Note that this post was originally written to show how to use the XML based watermarking syntax from a SharePoint Designer workflow. However, the same syntax can be used from our Nintex Workflow Activity as well as the Automatic Watermarking Facilities.
The Muhimbi PDF Converter for SharePoint contains a powerful watermarking engine that can be used to add watermarks to pages as well as adding headers, footers, page numbering and other recurring items. Multiple watermarks can be applied to the same page and watermarks can be applied to page ranges, page intervals or certain page types such as portrait or landscape.
In part 1 of this series I showed how simple watermarks can be added, one at a time, to a PDF file using a simple SharePoint Designer Workflow Action. The disadvantage to this approach is that if you wish to combine multiple different shapes, e.g. a Circle, an Image and some dynamic text, then a separate watermarking cycle is carried out internally for each shape. This works well and will be fast enough for most occasions, but it is not the most efficient way to do it.
The separate Add Composite Watermark to PDF workflow action allows multiple watermarks to be applied in one go with each watermark made up of 1 or more individual shapes.
The workflow parameters are as follows:

The real power comes as part of the watermark.xml field that stores the XML that describes the multiple watermarks and elements. The XML for each individual shape is described below, but before we go into more details let’s start with an example.
The following sample code describes three watermarks.
- The first adds an image of the company logo (in the foreground) to the top right of each page in the document.
- The second adds the login-id of the user who created / changed the document to a random location in the background in a semi-transparent way.
- The third adds an automatically generated page number to the bottom right of each page.
If you wish to run this example then please make sure the imageFilePath attribute is updated to a file on your system.
<watermarks>
<!-- ** First watermark contains a single image element with the logo -->
<watermark
hPosition="right"
vPosition="top"
width="200"
height="73"
zOrder="1"
opacity="100"
pageOrientation="both">
<image
width="200"
height="73"
scaleMode="maintainaspectratio"
imageFilePath="watermarking/muhimbi-logo.gif"/>
</watermark>
<!-- ** Second watermark places the user's name in the background -->
<watermark
hPosition="random"
vPosition="random"
width="300"
height="200"
zOrder="-1"
rotation="-30"
opacity="15"
pageOrientation="both">
<text
width="200"
height="200"
fillColor="#000000"
content="Insert 'modified by' field using SharePoint Designer"
fontFamilyName="Times New Roman"
fontSize="24"
fontStyle="bold|italic"
wordWrap="word"
/>
</watermark>
<!-- ** Third watermark adds page numbering -->
<watermark
hPosition="right"
vPosition="bottom"
width="100"
height="40"
zOrder="1"
pageOrientation="both">
<text
hPosition="left"
vPosition="top"
width="100"
height="40"
content="Page {PAGE} of {NUMPAGES}"
fontFamilyName="Arial"
fontSize="11"
hAlign="left"
vAlign="top"
/>
</watermark>
</watermarks>
As the previous example shows, the watermarks element may contain multiple watermark elements. This watermark element again can contain one or more individual shapes such as text and images.
The watermark element acts as a container that determines where the watermark will be located, on which pages, before or behind the text, opacity as well as which page orientations the watermark applies to.
The XML looks as follows (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<watermark
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="optional"
y="optional"
width="required"
height="required"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
pageOrientation="optional (portrait, landscape, both)"
startPage="optional"
endPage="optional"
pageInterval="optional"
pageRange="optional">
This watermark can be used to apply text to the foreground or background of one or more pages in the PDF file with full control over the font, style, size and color.
The XML looks as follows (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<text
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="optional"
y="optional"
width="required"
height="required"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
lineColor="optional"
lineWidth="optional"
fillColor="optional"
content="required"
fontFamilyName="optional"
fontSize="optional"
fontStyle="optional (regular, bold, italic, strikeout, underline)"
wordWrap="optional (none, character, word, wordonly)"
hAlign="optional (left, center, right, justify)"
vAlign="optional (top, middle, bottom)"
/>
The text stored in the content attribute may contain embedded field codes such as the date or current page number. For details see section 5.5 Embedding field codes in the Text element of the User Guide.
When a lot of content is anticipated then you may want to remove the content attribute and instead place it inside the text element, for example:
<text
hPosition="optional (absolute, random, left, center, right)"
... rest omitted
>
Your content goes here, use a CDATA section if needed.
</text>
SharePoint Designer lookup variables are also supported, which makes it possible for dynamic information stored in workflow variables, or in the Item’s columns, to be embedded in the watermark.
The RTF watermark allows simple RTF encoded text to be added as a watermark. This allows more control over the look and feel of individual words in the watermark at the cost of added complexity.
An example of valid RTF is as follows:
{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard
This is some {\b bold} text.\par
}
The XML looks as follows (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<rtf
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="optional"
y="optional"
width="required"
height="required"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
lineColor="optional"
lineWidth="optional"
fillColor="optional"
rtfData="required"/>
When a lot of content is anticipated then you may want to remove the rtfData attribute and instead place it inside the rtf element, for example:
<rtf
hPosition="optional (absolute, random, left, center, right)"
... rest omitted
>
Your content goes here, use a CDATA section if needed.
</rtf>
Note that unlike the Text watermark, the RTF watermark does not support embedded Muhimbi field codes. However, SharePoint Designer lookup variables are fully supported to make it possible for dynamic information stored in workflow variables, or in the Item’s columns, to be embedded in the watermark.
Use the Image watermark to add common image types (BMP, JPG, GIF, PNG, TIFF, WMF, EMF / EMF+) as a watermark to a PDF document.
The XML looks as follows (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<image
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="optional"
y="optional"
width="optional"
height="optional"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
lineColor="optional"
lineWidth="optional"
fillColor="optional"
imageFilePath="required"/>
The image at this path parameter expects the full path of the image relative to the current site, e.g. ‘shared documents/images/company_logo.gif’.
Existing PDF files can also be used as a watermark. This could be a dynamic file that is generated from, for example MS-Word, and then converted to PDF using the Muhimbi PDF Converter. Alternatively this could be a static PDF file that has been generated manually.
The XML looks as follows (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<pdf
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="optional"
y="optional"
width="optional"
height="optional"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
lineColor="optional"
lineWidth="optional"
fillColor="optional"
pdfFilePath="required"/>
The pdf file path parameter expects the full path of the PDF name relative to the current site, e.g. ‘shared documents/static watermarks/company_logo.pdf’.
A simple rectangle can be added as a watermark. The XML looks as follows (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<rectangle
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="optional"
y="optional"
width="required"
height="required"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
lineColor="optional"
lineWidth="optional"
fillColor="optional"/>
A line can be added as a watermark. The XML looks as follows (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<line
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="required"
y="required"
endX="required"
endY="required"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
lineColor="optional"
lineWidth="optional"/>
A circle or ellipse can be added as a watermark. (Please omit any attributes marked as optional from your code when they are not needed. Leaving them in with the ‘optional’ text will cause an error.)
<ellipse
hPosition="optional (absolute, random, left, center, right)"
vPosition="optional (absolute, random, top, middle, bottom)"
x="optional"
y="optional"
width="required"
height="required"
zOrder="optional"
scaleMode="optional (absolute, exactFit, maintainaspectratio)"
scaleX="optional"
scaleY="optional"
rotation="optional"
opacity="optional"
lineColor="optional"
lineWidth="optional"
fillColor="optional"/>
.
Labels: Articles, pdf, PDF Converter, Watermarking, Workflow
Posted at: 6:11 PM on 24 October 2010 by Muhimbi
The Muhimbi PDF Converter for SharePoint has had the ability to apply watermarks to PDF files for quite some time. However, this really was only available to power users as it required either interacting with the Conversion Web Service directly or running custom code using our Workflow Power Pack.
Fortunately applying simple as well as complex watermarks is now within reach of all our users as, starting with the 4.0 release, we now include a free set of SharePoint Designer Workflow Actions that allow watermarks to be applied with a minimum amount of hassle.
What follows is an abstract from the PDF Converter for SharePoint user guide. For more details please check out chapter 5 as well as the Watermark Field Matrix Appendix.
The Muhimbi PDF Converter for SharePoint contains a powerful watermarking engine that can be used to add watermarks to pages as well as adding headers, footers, page numbering and other recurring items. Multiple watermarks can be applied to the same page and watermarks can be applied to page ranges, page intervals or certain page types such as portrait or landscape.
In addition to Document and HTML Conversion workflow actions, the Muhimbi PDF Converter also comes with a number of Watermarking related workflow actions for SharePoint Designer 2007 and 2010. These workflow actions allow elements such as text, rectangles, images, PDF files as well other shapes to be added to a document either in front of or behind the document’s content.
Note that these watermarks can only be applied to PDF files, so if for example an MS-Word file needs to be watermarked then it will need to be converted to PDF first in a separate step.
Each separate watermark workflow action is applied to the document separately. If multiple watermarks need to be applied in one go then you may want to have a look at part 2 of this series, Composite Watermarks.
An example of what is possible, apply watermarks as well as page numbering to documents
The individual workflow actions are self-describing, but the following elements require special attention:
- this document: The document to apply the watermark to. For most workflows selecting Current Item will suffice, but some custom scenarios may require the look up of a different item. You may also want to check that the file type of the document is ‘pdf’ before trying to apply a watermark.
- this file: The name and location of the watermarked file. Leave this field empty to overwrite the source file with the watermarked copy. Enter a path, including the Document Library and any folder names, to write the watermarked file to a separate location. E.g. “shared documents/watermarked files/confidential.pdf”
- List ID: The ID of the list the watermarked file was written to. This can later in the workflow be used to perform additional tasks on the file such as a check-in or out.
- Item ID: The ID of the watermarked file. Can be used with the List ID.
This workflow action can be used to apply text to the foreground or background of one or more pages in the PDF file with full control over the font, style, size and colour.
The SharePoint Designer workflow action is named Add Text watermark to PDF and the parameters are as follows:

The text stored in the content field may contain embedded field codes such as the date or current page number. For details see section 5.5 Embedding field codes in the Text element in the User Guide.
SharePoint Designer lookup variables are also supported, which makes it possible for dynamic information stored in workflow variables, or in the Item’s columns, to be embedded in the watermark.
The RTF watermark allows simple RTF encoded text to be used as a watermark. This allows more control over the look and feel of individual words in the watermark at the cost of added complexity.
An example of valid RTF is as follows:
{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard
This is some {\b bold} text.\par
}
The SharePoint Designer workflow action is named Add RTF watermark to PDF and the parameters are as follows:

Note that unlike the Text watermark, the RTF watermark does not support Muhimbi’s embedded field codes. However, SharePoint Designer lookup variables are fully supported to make it possible for dynamic information stored in workflow variables, or in the Item’s columns, to be embedded in the watermark.
Please note that due to a bug in SharePoint 2010, lookup variables in RTF text may have unexpected side effects. SP2007 works fine. We are working with Microsoft to fix the bug in SharePoint.
Use the Image watermark to add common image types (BMP, JPG, GIF, PNG, TIFF, WMF, EMF / EMF+) as a watermark to a PDF document.
The SharePoint Designer workflow action is named Add Image watermark to PDF and the parameters are as follows:

The image at this path parameter expects the full path of the image relative to the current site, e.g. ‘shared documents/images/company_logo.gif’.
Existing PDF files can also be used as a watermark. This could be a dynamic file that is generated from, for example MS-Word, and then converted to PDF using the Muhimbi PDF Converter. Alternatively this could be a static PDF file that has been generated manually.
The SharePoint Designer workflow action is named Add PDF watermark to PDF and the parameters are as follows:

The pdf file path parameter expects the full path of the PDF name relative to the current site, e.g. ‘shared documents/static watermarks/company_logo.pdf’.
A simple rectangle can be added as a watermark using the Add Rectangle to PDF workflow action. The parameters are as follows:

A line can be added as a watermark using the Add Line to PDF workflow action. The parameters are as follows:

A circle or ellipse can be added as a watermark using the Add Ellipse to PDF workflow action. The parameters are as follows:

Continue to part 2, Composite Watermarks.
.
Labels: Articles, pdf, PDF Converter, Watermarking, Workflow