DominoPDF Documentation

www.dominopdf.com

Author: DominoPDF

Release Date: 13 December 2019

Modified: 13 December 2019

Email support: mail@dominopdf.com


DominoPDF is a one stop solution for creating PDF files from Lotus Notes / Domino.

Introduction

DominoPDF is a one stop solution for creating PDF files from Lotus Notes / Domino and is simply deployed on a Lotus Notes client or Domino Server and is the only software required - no other additional software or third-party tool is needed.

All Notes content can be converted to PDF and settings such as page size, orientation, encryption, compression, display modes, metadata etc. can be controlled. DominoPDF also provides functions for merging and modifying existing PDF files.

Simply pass in the input source, the name of the pdf file to be created and any options and DominoPDF does the rest.

What's included?

Core Files (required)
DominoPDFCOM.exe The core DominoPDF COM automation object called from LotusScript.
DominoPDF.dll The core DominoPDF Dynamic Linked Library.
Core Files (optional)
DominoPDFLN.dll DominoPDF Lotus Notes client-side HTML / MIME renderer.
DominoPDFFX.dll DominoPDF Lotus Notes client-side NOTES API renderer.
DominoPDFOO.dll DominoPDF Open-Office attachment renderer.
DominoPDFIE.dll DominoPDF Internet Explorer Javascript renderer.
Core Files (legacy)
DominoPDF64.dll The core DominoPDF 64-Bit Dynamic Linked Library. Use DominoPDF COM instead.
GdiPlus.dll GdiPlus Dynamic Linked Library providing PNG image support.
Secure Socket Layer / SSL Files (required for SSL-enabled connections)
libcrypto-1_1.dll OpenSSL Binaries Win-32 1.1.1d. Supports TLSv1.3. Only supports Windows Vista/Server 2008, and later, not Windows XP.
libssl-1_1.dll OpenSSL Binaries Win-32 1.1.1d. Supports TLSv1.3. Only supports Windows Vista/Server 2008, and later, not Windows XP.
TrustedCABundle.pem PEM Bundle CA Trusted Store Files.
Documentation
/dompdfdoc This documentation.

Installation

File Locations

Typically DominoPDF should be installed in the Notes / Domino software directory (same place as nnotes.exe), however it can also be placed in another directory as long as it is in the system path.

DominoPDF COM Registration

The DominoPDF installer will automatically register the COM object, however manual installation is as below.

To register the COM object run command:

$INSTDIR\DominoPDFCOM.exe /regserver

Where $INSTDIR is the COM file installation path. Once this is done you can check DCOMCNFG to ensure the DominoPDF COM object is present.

If you cannot see the DominoPDF COM object after registering in the DCOMCNFG screen you may need to check the 32-bit DCOM config manager.

To configure 32-bit DCOM applications run command:

C:\WINDOWS\SysWOW64\mmc comexp.msc /32

Be sure to run all /regserver and command line actions as an Administrator.

DominoPDF COM Interface Security

In some cases, security settings may need to be adjusted to allow DominoPDF COM to operate.

On the server machine where DominoPDF is installed, execute the following;

Start > Run > dcomcnfg

Choose: Component Services > Computers > My Computer > DCOM Config > DominoPDF COM object.

Open the properties of DominoPDF COM object. (right-click Properties)

Go to Identify tab

Choose the interactive user radio button

The idea behind this is to tell DominoPDF to run as the currently logged in user. Alternatively, you can specify an explicit user or add one via the Security tab.

Note that instead of "The interactive user" setting you may need to add the account you are currently logged into to the DCOM setting.

Running Domino As A Service

If you run the Domino Server as a service you may need to enable the Log On used to interact with the desktop.

Open the Service properties for "Lotus Domino Server" and click the Log On tab.

Enable "Allow service to interact with desktop".

Usage

Calling DominoPDF

The DoPDF function is the core function of DominoPDF used for converting content to PDF output.

The DominoPDF COM object can be called directly from LotusScript as follows.

Dim v as Variant
 Set v = CreateObject("DominoPDFCOM.DominoPDFCOM")
 If Not v Is Nothing then
    Call v.DoPDF(szInput, szOutput, szSettings)
 End If

All DominoPDF methods can be called in a similar manner. For example;

Call v.DomPDFMerge(szInput, szOutput)

Call v.DomPDFAddImage(szPDF, szImage, "1", 10, 10, 200, 400, 0)

Input Source(s) To DominoPDF

DominoPDF accepts selection formulas, file formats and URL's as an input source.

If file formats or URL's are used multiple sources can be specified by separating values with a semi-colon (;) or specifying an external file list of values (see Multiple Inputs).

URL Input

To convert a Notes document URL to a PDF file simply pass the URL of the Notes document.

http://localhost/names.nsf/2022DB1FD398438D80256AAE0058C5D5/56D6957AE7808A1E80256A380041F84E?OpenDocument

Any Notes URL element can be passed in the same manner.

http://localhost/names.nsf/Home?OpenForm

http://localhost:81/names.nsf/GeneratePDF?OpenAgent

http://localhost/names.nsf/contacts?OpenView

The URL does not have to be a Notes URL. As long as the URL is available and returns HTML DominoPDF will convert it.

http://www.dominopdf.com

Selection Formula Input (32-Bit Only)

To convert all Memo documents in a database to a PDF file simply pass in the appropriate selection formula.

Select Form = "Memo"

DominoPDF accepts any valid selection formula as per the Notes guidelines.

Output PDF

The file name and path of the PDF file to be generated.

For example;

contacts.pdf

c:\contacts.pdf

c:\my documents\contacts.pdf

Settings

The settings passed to the function are a semi-colon (;) delimited list of name=value pairs.

For example;

Call v.DoPDF(|Select Form = "Memo"|, "c:\memo.pdf", "Database=mail.nsf;PageSize=A4;AutoLaunch=True")

A list of all available settings are provided below.

Global Settings
AutoLaunch=True/FalseSpecify whether the PDF should be automatically opened after creation.
PageSize=[value]Specify the page size for the PDF output. The supported values are Letter, A4, A3, Legal, B5, C5, B4, A5, Folio, Executive, EnvB4, EnvB5, EnvC6, EnvDL, EnMonarch, Env9, Env10 and Env11.
Orientation=[value]Specify the orientation of pages in the PDF output. The support values are Portrait and Landscape.
PageHeight=[value]Specify a custom page height in MM (unless UseInches is True).
PageWidth=[value]Specify a custom page width in MM (unless UseInches is True).
HeaderSize=[value]Specify a custom header size in MM (unless UseInches is True).
FooterSize=[value]Specify a custom footer size in MM (unless UseInches is True).
LeftMargin=[value]The left margin size in MM (unless UseInches is True) used when converting a non-RTF file format.
RightMargin=[value]The right margin size in MM (unless UseInches is True) used when converting a non-RTF file format.
TopMargin=[value]The top margin size in MM (unless UseInches is True) used when converting a non-RTF file format.
BottomMargin=[value]The bottom margin size in MM (unless UseInches is True) used when converting a non-RTF file format.
UseInches=True/FalseIndicates that the measurements for LeftMargin, RightMargin, TopMargin and BottomMargin and specified in inches instead of the default MM.
Compressed=True/FalseIndicates whether compression is used for PDF file creation. Compresses content, images and fonts.
Author=[value]Indicates the author name to be displayed in the PDF document properties dialog.
Title=[value]Indicates the title to be displayed in the PDF document properties dialog.
Subject=[value]Indicates the subject to be displayed in the PDF document properties dialog.
Keywords=[value]Indicates the keywords to be displayed in the PDF document properties dialog.
PDFVersion=[value]Indicate the PDF version created. The supported values are 1.3, 1.4, 1.5 and 1.6.
PageMode=[value]Indicates the default display mode when a PDF document is opened in a reader. The supported values are None, Outlines, Thumbnails and FullScreen.
ConvertURL=True/FalseIndicates whether any http or mailto texts are converted to links in the PDF file.
ConvertHTML=[value]Convert input source(s) to HTML instead of PDF. Specify output path and filename.
Outlines=True/FalseIndicates whether outlines are created in the PDF document.
HTMLHeader=[value]Specify header content as formatted HTML. Can be either a URL or direct HTML content. Note: For single string entries, such as HTMLHeader=DominoPDF be sure to add the <BR> tag which will ensure the header sizes correctly. For example, HTMLHeader=DominoPDF<BR>. Note: Be sure to size the TopMargin setting to size the header accordingly.
HTMLHeaderFirst=[value]Specify header content as formatted HTML for FIRST page only. Can be either a URL or direct HTML content. Note: For single string entries, such as HTMLHeaderFirst=DominoPDF be sure to add the <BR> tag which will ensure the header sizes correctly. For example, HTMLHeaderFirst=DominoPDF<BR>. Note: Be sure to size the TopMargin setting to size the header accordingly.
HTMLHeaderLast=[value]Specify header content as formatted HTML for LAST page only. Can be either a URL or direct HTML content. Note: For single string entries, such as HTMLHeaderLast=DominoPDF be sure to add the <BR> tag which will ensure the header sizes correctly. For example, HTMLHeaderLast=DominoPDF<BR>. Note: Be sure to size the TopMargin setting to size the header accordingly.
HTMLFooter=[value]Specify footer content as formatted HTML. Can be either a URL or direct HTML content. Note: For single string entries, such as HTMLFooter=DominoPDF be sure to add the <BR> tag which will ensure the footer sizes correctly. For example, HTMLFooter=DominoPDF<BR>. Note: Be sure to size the BottomMargin setting to size the header accordingly.
HTMLFooterFirst=[value]Specify footer content as formatted HTML for FIRST page only. Can be either a URL or direct HTML content. Note: For single string entries, such as HTMLFooterFirst=DominoPDF be sure to add the <BR> tag which will ensure the footer sizes correctly. For example, HTMLFooterFirst=DominoPDF<BR>. Note: Be sure to size the BottomMargin setting to size the header accordingly.
HTMLFooterLast=[value]Specify footer content as formatted HTML for LAST page only. Can be either a URL or direct HTML content. Note: For single string entries, such as HTMLFooterLast=DominoPDF be sure to add the <BR> tag which will ensure the footer sizes correctly. For example, HTMLFooterLast=DominoPDF<BR>. Note: Be sure to size the BottomMargin setting to size the header accordingly.
Encryption=True/FalseDenotes whether encryption is applied to the PDF file.
UserPassword=[value]Applies the specified user password to the PDF file.
OwnerPassword=[value]Applies the specified owner password to the PDF file.
EncryptStrength=40/128Applies the appropriate encryption strength to the PDF file. The default is standard 40-bit and advanced 128-bit is supported.
EnablePrinting=True/FalseSet this to True to allow the user to print the PDF document.
EnableCopying=True/FalseSet this to True to allow the user to copy text and graphics from the PDF document.
EnableEditing=True/FalseSet this to True to allow the user to edit the PDF document
EnableAnnotations=True/FalseSet this to True to allow the user to add annotations to the PDF document.
EnableFields=True/FalseSet this to True to allow the user to fill in form fields. Only works with 128-bit encryption.
EnableCopyAccess=True/FalseSet this to True to enable copying for use with accessibility features. Only works with 128-bit encryption.
EnableAssemble=True/FalseSet this to True to allow the user to assemble the PDF document. Only works with 128-bit encryption.
EnablePrintFull=True/FalseSet this to False to force low-resolution printing of the PDF document only. This prevents the document from being distilled into a new PDF document. Only works with 128-bit encryption.
NoEmbedFonts=[value]By default when creating PDF files DominoPDF embeds any used fonts into the PDF. For some fonts (such as barcodes) the process may fail or you may want to reduce the size of the PDF. NoEmbedFonts allows a list of font names to be specified which will not be embedded in the PDF. The fonts will still display correctly when the PDF is viewed, however the font must exist on the appropriate machine. Multiple font names are separated with an asterisk (*). For example; NoEmbedFonts=Arial*Times New Roman
OverrideFont=[value]Override all fonts with the specified font name.
DefFontName=[value]Set the default font name.
DefFontSize=[value]Set the default font size.
EmbedFiles=[value]File path and name of file(s) to embed in the PDF. Multiple file names are separated with an asterisk (*). For example; EmbedFiles=c:\orgchart.gif*c:\temp\minutes.doc
EmbedFilesLast=True/FalseProcess embedded files after all merge operations have completed.
EmulateStandardFont=True/FalseDo not embed fonts supported by PDF natively.
ImagesAsJPEG=True/FalseConvert all images to JPEG before embedding in PDF.
JPEGQuality=[value]Specify JPEG quality %. Default=80.
MaxImageWidth=[value]Set maximum image width and resize large images accordingly.
MaxHPages=[value]Specify maximum horizontal pages for splitting large elements.
PrintBackground=True/FalseOutput background graphics and colours to PDF.
PDFACompatible=True/FalsePDF/A-1b

DominoPDF supports PDF/A-1b with an independent color space.

To enable support for PDF/A-1b in DominoPDF, simply pass the PDFACompatible=True setting in your DoPDF() call.

PDF/A-1a

DominoPDF is unable to support PDF/A-1a for a number of reasons;

The file must contain 'tagged' textual data in order to recover the text information easily.

This is simply impossible for a general purpose PDF converter.

In the general case there is no way to infer which portions of text on a page are (for example) running heads, page numbers, footnote rules etc.

Nor is it possible to reliably generate, for example, the reading order of the text.

The ISO specification clearly says "PDF/A-1 writers should not add structural or semantic information that is not explicitly or implicitly present in the source material solely for the purpose of achieving conformance." and also "It is inadvisable for writers to generate structural or semantic information using automated processes without appropriate verification."

Although we could produce a document which would pass an automated conformance checker, we could not guarantee that the file would be 'correct' as regards the intention of the specification.

SecurityState=[value]Set PDF encryption level. None (Default), 40RC4, 128RC4, 128AES, 256AES
BaseHRef=[value]Set Base HREF for relative HTML paths.
PDFResolution=[value]Set PDF resolution.
UsePrinterRes=True/FalseUse default printer resolution instead of device context.
AsImage=True/FalseOutput rendered content as an image instead of elements.
NoStretch=True/FalseControl dynamic image resizing.
XMPMetaData=[value] or True/FalseSpecify whether XMP Metadata is included in the PDF file. If True is specified then DominoPDF will automatically generate the metadata, otherwise you can specify your own or custom metadata value.
ShortDateFormat=[value]Specify custom display format for short dates. For example; dd/mm/yyyy.
HTTP and HTML Settings
WebUsername=[value]If the URL connection requires authorisation the HTTP username can be specified. (Note this is the username for web access not Notes access).
WebPassword=[value]If the URL connection requires authorisation the HTTP password can be specified. (Note this is the password for web access not Notes access).
WebProxyUsername=[value]If the URL connection requires proxy authorisation the HTTP proxy username can be specified. (Note this is the username for web access not Notes access).
WebProxyPassword=[value]If the URL connection requires authorisation the HTTP proxy password can be specified. (Note this is the password for web access not Notes access).
WebProxyServer=[value]If the URL connection requires proxy connection the proxy server can be specified.
WebProxyPort=[value]If the URL connection requires proxy connection the proxy port can be specified.
NTLM=True/FalseSet this to True to specify NTLM authentication.
NTLMCompatLevel=[value]LAN Manager authentication level (by Microsoft, Server 2008 R2) where accepted values are 0, 1, 2, 3, 4 or 5 (default is 0).

This security setting determines which challenge/response authentication protocol is used for network logons. This choice affects the level of authentication protocol used by clients, the level of session security negotiated, and the level of authentication accepted by servers as follows:

Level 0

Send LM & NTLM responses: Clients use LM and NTLM authentication and never use NTLMv2 session security; domain controllers accept LM, NTLM, and NTLMv2 authentication.

Level 1

Send LM & NTLM: Clients use NTLMv2 session security if negotiated: Clients use LM and NTLM authentication and use NTLMv2 session security if the server supports it; domain controllers accept LM, NTLM, and NTLMv2 authentication.

Level 2

Send NTLM response only: Clients use NTLM authentication only and use NTLMv2 session security if the server supports it; domain controllers accept LM, NTLM, and NTLMv2 authentication.

Level 3

Send NTLMv2 response only: Clients use NTLMv2 authentication only and use NTLMv2 session security if the server supports it; domain controllers accept LM, NTLM, and NTLMv2 authentication.

Level 4

Send NTLMv2 response only\refuse LM: Clients use NTLMv2 authentication only and use NTLMv2 session security if the server supports it; domain controllers refuse LM (accept only NTLM and NTLMv2 authentication).

Level 5

Send NTLMv2 response only\refuse LM & NTLM: Clients use NTLMv2 authentication only and use NTLMv2 session security if the server supports it; domain controllers refuse LM and NTLM (accept only NTLMv2 authentication).

AcceptLanguage=[value]Specifies the HTTP request language (for example, en-gb or en-us etc.). If left blank or not specified DominoPDF will base the language on the default locale.
UserAgent=[value]A User-Agent can be specified for example; Call v.DoPDF(sURL, sPDF, "UserAgent=Mozilla/4.0 (compatible* MSIE 7.0* Windows NT 5.2* .NET CLR 1.1.4322* .NET CLR 2.0.50727* .NET CLR 3.0.04506.30* .NET CLR 3.0.04506.648* .NET CLR 3.0.4506.2152* .NET CLR 3.5.30729)")

Note as DominoPDF uses semi-colons (;) for option delimiters the semi-colons in a user agent string can be replaced with asterisks (*) and DominoPDF will substitute semi-colons accordingly.
UseIE=True/FalseThe DominoPDF HTML render does not support JavaScript by default. If you have JavaScript enabled content DominoPDF can use Microsoft Internet Explorer to "build" the JavaScript and return the resulting HTML to DominoPDF for processing.
UseIEHTTP=True/FalseThe DominoPDF HTTP engine will use WinINet for connections instead of its native HTTP.
UseCache=True/FalseDominoPDF will cache resources for re-use to speed up load times and server connections.
HTTPTimeout=[value]Override default HTTP connection timeout for native HTTP connections.
IEHTTPTimeout=[value]Override default HTTP connection timeout for WinINet HTTP connections.
SSL Settings
SSLSecurity=[value]0 - ignore, use old settings
1 - all protocols and ciphers, any key lengths (Default)
2 - SSLv3 only, all ciphers, any key lengths, MD5
3 - TLSv1 only, all ciphers, RSA/DH keys=>2048
4 - TLSv1.1 only, all ciphers, RSA/DH keys=>2048
5 - TLSv1.2 only, all ciphers, RSA/DH keys=>2048
6 - TLSv1.3 only, all ciphers, RSA/DH keys=>2048
7 - TLSv1 or later, all ciphers, RSA/DH keys=>1024
8 - TLSv1.1 or later, all ciphers, RSA/DH keys=>1024
0 - TLSv1.2 or later, all ciphers, RSA/DH keys=>2048
10 - TLSv1 or later, backward ciphers, RSA/DH keys=>1024, ECC=>160, no MD5, SHA1
11 - TLSv1.1 or later, intermediate ciphers, RSA/DH keys=>2048, ECC=>224, no RC4, no SHA1 certs
12 - TLSv1.2 or later, high ciphers, RSA/DH keys=>2048, ECC=>224, no RC4, no SHA1 certs
13 - TLSv1.2 or later, high ciphers, RSA/DH keys=>3072, ECC=>256, FS forced
14 - TLSv1.2 or later, high ciphers, RSA/DH keys=>7680, ECC=>384, FS forced
SSLSecurityLevel=[value]0 - (Any) anything allowed, old compatibility
1 - (80 bits) RSA/DH keys=>1024, ECC=>160, no MD5 (Default)
2 - (112 bits) RSA/DH keys=>2048, ECC=>224, no RC4, no SSL3, no SHA1 certs
3 - (128 bits) RSA/DH keys=>3072, ECC=>256, FS forced, no TLS/1.0
4 - (192 bits) RSA/DH keys=>7680, ECC=>384, no SHA1 suites, no TLS/1.1
5 - (256 bits) RSA/DH keys=>15360, ECC=>512
SSLCertMode=[value]Validate host certificates.

0 - None (Default)
1 - PEM Bundle CA Trusted Store (TrustedCABundle.pem)
2 - Windows CA Store

SSLRevokeCheck=True/FalseCheck revocation chain certificates excluding root. Default is False.
SSLAcceptableHosts=[value]A semicolon (;) delimited list of acceptable host names to validate and accept if SSLRevokeCheck=True and validation fails.
Selection Formula Settings (32-Bit Only)
Server=[value]Specify the server to use when evaluating a selection formula as input. If left blank or not specified then the Local server will be assumed.
Database=[value]Specify the database to use when evaluating a selection formula as input. Note that this value is required when using selection formulas. The database path is relative to the Notes \data directory, for example, mail.nsf or project\marketing.nsf. The fully qualified path of the database should be used if the database is outside the Notes \data directory. For example, c:\data\mail.nsf.
ForceSectionExpand=True/FalseSpecify whether sections on a form should be expanded when evaluating a selection formula as input.
ForceOutlineExpand=True/FalseSpecify whether outlines on a form should be expanded when evaluating a selection formula as input.
RowAtATimeTableAlt=True/FalseSpecify whether tabbed tables on a form should be expanded when evaluating a selection formula as input.
DisablePassthruHTML=True/FalseTurn off the special characters and tags that delimit passthru HTML in various situations.
FieldChoiceLabel=True/FalseAdd LABEL tags around choices of a field. This is needed because the choices are not "accessible" otherwise.
SectionAlt=True/FalseAlternate HTML for sections that incorporates all of the static section information but is not dynamic by default. HTML is always generated for all of the section, ignoring the "collapse" status. Thus using this option means that ForceSectionExpand is ignored.
TableCaptionFromTitle=True/FalseFor "accessibility". Generates caption tags.
TextExactSpacing=True/FalseEmit HTML to honor the exact spacing (amout of white space) in notes rich text. Normally a browser can collapse white space as needed. The notes editor does not collapse white space.
XMLCompatibleHTML=True/FalseGenerate HTML in such a way that it is parsable by an XML parser.
CleanStyles=[value]Specifiy additional CSS for styling client-side render.
FormOverride=[value]Specify Notes Form Override for client-side render.
OSTranslate=[value]OSTranslate translates a string between the specified character set and Lotus Multi-Byte Character Set (LMBCS).


OSTranslate=1 (Translate LMBCS to NATIVE)
OSTranslate=11 (Translate LMBCS to ASCII)
OSTranslate=22 (Translate LMBCS to UTF8)

NOTES API Render Settings (32-Bit Only)
UseFX=True/FalseEnable Notes API Render
FXCompressImageToFitSize=True/FalseResize images to fit page.
FXHideTableIfEmpty=True/FalseHide tables if all rows and cells are empty.
FXHideTableRowIfEmpty=True/FalseHide table row if all cells are empty.
FXIgnoreSpaceBeforeTable=True/FalseIgnore white space before tables.
FXShowOnlyImages=True/FalseOnly render images and ignore all other elements.
Logging Settings
LogFile=[value]DominoPDF supports logging by adding the LogFile= setting to the DoPDF() method options. Call v.DoPDF(sURL, sPDF, "LogFile=c:\dompdf.log.txt") After the method call is made the log file should exist and can be examined accordingly. For production usage logging should be disabled.
LogHTML=True/FalseWhen converting HTML content to PDF, DominoPDF can also add the actual HTML source to the log file by adding LogHTML=True to the options. The log file will then include the original HTM code, making debugging and analysis easier.
LogLive=True/FalseBy default the log file is generated at the end of the PDF creation process. However, in some circumstances where errors are occuring it may be needed to update the log file as each even occurs. By adding LogLive=True to the options the log file will be updated after each event. When LogLive=True is added there is more disk activity as the log file is written to more often.
LogFail=True/FalseWhen LogFail=True the PDF file will not be generated.
Log404=True/FalseWhen Log404=True and a HTTP 404 error is encountered the PDF file will not be generated.
LogAlert=True/FalseDisplay all log messages in a client-side dialog box. Not for server side usage.
TryAgain=[value]When HTTP connections fail DominoPDF will try again 5 times before aborting. Adjust the number of times by setting the TryAgain option.

Multiple Inputs

If you need to process a large number of separate URLs or files then the LotusScript method may truncate your input. It is possible to call the DoPDF method in a loop to create separate PDF files for each input. Then merge the resulting PDF files into a single PDF with the DomPDFMerge method.

However another way of handling a long list of input values is provided by DominoPDF. The list of input values can be written to a file with an extension of *.domp and when this is passed to DominoPDF each item is processed in turn and output to a single PDF.

LotusScript can be used to write the values out to the file as in the example below.

Sub Initialize
     Dim fileNum As Integer
     Dim fileName As String

     fileNum% = Freefile()
     fileName$ = "c:\data.domp"

     Open fileName$ For Output As fileNum%

     Print #fileNum%, |http://www.google.com|
     Print #fileNum%, |http://www.dominopdf.com|

     Close fileNum%

     Call v.DoPDF(|c:\data.domp|, |c:\test.pdf|, ||)
 End Sub

The *.domp file can be mixed with other input values as appropriate. For example;

Call v.DoPDF(|http://localhost/names.nsf/Home?OpenForm;c:\data.domp|, |c:\test.pdf|, ||)

Helper Functions

DomPDFPages

The DomPDFPages function returns the number of pages in a generated PDF file.

Declarations

iPages = v.DomPDFPages(Byval szPDF As String) As Long

Return Value

Returns the number of pages in the specified PDF file.

Syntax

szPDF - The fully qualified file path and name of the PDF file.

DomPDFMerge

The DomPDFMerge function is used to merge two or more existing PDF files into a single PDF file.

Note the DomPDFMerge function does not support merging of encrypted PDF files.

Declarations

Call v.DomPDFMerge(Byval szInput As String, Byval szOutput As String) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - A semi-colon (;) delimited list of file names and paths of PDF files to merge.

szOutput - The file name and path of the merged PDF file to be generated.

DomPDFMergeFiles

An alternative version of DomPDFMerge which is more forgiving with PDF file checks.

DomPDFMergeFilesFast

An alternative version of DomPDFMerge which performs no PDF file checks.

DomPDFEmbedFile

The DomPDFEmbedFile function embeds an external file inside a generated PDF file.

Note the function does not support merging of encrypted PDF files.

Declarations

Call v.DomPDFEmbedFile(Byval szPDF As String, Byval szFile As String, ByVal szOutput As String, Byval iDelete as Long) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szPDF - The fully qualified file path and name of the input PDF file.

szFile - File path and name of file(s) to embed in the PDF. Multiple file names are separated with an asterisk (*). For example; EmbedFiles=c:\orgchart.gif*c:\temp\minutes.doc

szOutput - The fully qualified file path and name of the output PDF file.

iDelete - Whether to delete the embed files after embedding.

DomPDFEncrypt

The DomPDFEncrypt function is used to encrypt an existing PDF file.

Note the DomPDFEncrypt function does not support encrypting an already encrypted PDF file.

Declarations

Call v.DomPDFEncrypt(Byval szInput As String, Byval szOwnerPass As String, Byval szUserPass As String,
Byval iAllowPrint As Long, Byval iAllowCopy As Long, Byval iAllowChange As Long,
Byval iAllowAnnotate As Long, Byval iAllowFields As Long, Byval iAllowCopyAccess As Long,
Byval iAllowAssemble As Long, Byval iAllowPrintFull As Long, Byval iStrength As Long) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - The file name and path of the PDF file to be encrypted.

szOwnerPass - Specify the owner password to apply to PDF documents.

szUserPass - Specify the user password to apply to PDF documents.

iAllowPrint - Set this to 1 to allow the user to print the PDF document.

iAllowCopy - Set this to 1 to allow the user to copy text and graphics from the PDF document.

iAllowChange - Set this to 1 to allow the user to edit the PDF document.

iAllowAnnotate - Set this to 1 to allow the user to add annotations to the PDF document.

iAllowFields - Set this to 1 to allow the user to fill in form fields. Only works with 128-bit encryption strength (see iStrength).

iAllowCopyAccess - Set this to 1 to enable copying for use with accessibility features. Only works with 128-bit encryption (see iStrength).

iAllowAssemble - Set this to 1 to allow the user to assemble the PDF document. Only works with 128-bit encryption (see iStrength).

iAllowPrintFull - Set this to 0 to force low-resolution printing of the PDF document only. This prevents the document from being distilled into a new PDF document. Only works with 128-bit encryption (see iStrength).

iStrength - The strength of encryption to use: 0 = Standard 40-bit encryption. 1 = Advanced 128-bit encryption.

DomPDFDecrypt

The DomPDFDecrypt function is used to decrypt an existing PDF file.

Declarations

Call v.DomPDFEncrypt(Byval szInput As String, Byval szOutput As String, Byval szPassword As String) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - The file name and path of the PDF file to be decrypted.

szOutput - The file name and path of the PDF file to be output.

szPassword - The password used to decrypt the PDF.

DomPDFAddText

The DomPDFAddText function is used to add text to an existing PDF file.

Note the function does not support processing an already encrypted PDF file.

Declarations

Call v.DomPDFAddText(Byval szInput As String, Byval szText As String,
Byval szPages As String, Byval iLeft As Double, Byval iTop As Double,
Byval iWidth As Double, Byval iAngle As Double, Byval iFontSize As Double) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - The file name and path of the PDF file to be opened.

szText - Specify the text to add to the PDF document.

If the angle parameter is set to 0 (zero) then the szText parameter can contain a small subset of HTML commands to affect the formatting output to PDF. If an angle is specified the text is output as-is.

The following HTML tags are supported: <br>, <b>, <i>, <strong>, <em>, <u>, <p align=left>, <p align=right>, <p align=center>, <font size=x> and <font color=c>. For the color attribute of the font tag you can use an RGB color specified in hexadecimal. For example <font color="#3A498C">. You can also specify a CMYK color by using eight hexadecimal digits and omitting the #. For example <font color="5C238F02">.

szPages - Specify the pages in the PDF on which to add text.

The szPages parameter has been defined as a string variable so a range of pages can be specified.

If szPages are left blank (for example "") all pages in the PDF document will be affected.

If szPages denotes a single page (for example "1") the specified page will be affected.

If szPages denoted a range of pages (for example "1, 3-4, 7") the specified range of pages will be affected.

iLeft - The left position to begin text output.

iTop - The top position to begin text output.

iWidth - The width of the text output.

iAngle - The angle of the text output. Must be between 0 and 360.

iFontSize - The font size for the output text.

DomPDFAddTextW

To stamp unicode or accented character text with DominoPDF you need to use the DomPDFAddTextW() method instead of DomPDFAddText().

The syntax is different as follows;

Call v.DomPDFAddText(Byval szInput As String, Byval szPages As String, Byval szFontName As String,
Byval iLeft As Double, Byval iTop As Double, Byval iWidth As Double,
Byval iHeight As Double, Byval iFontSize As Double, Byval iCharSet As Double, Byval szText As Variant) As Long

The iCharSet parameter controls the character set used for the stamping and is a number as follows.

1=ANSI_CHARSET
2=DEFAULT_CHARSET
3=SYMBOL_CHARSET
4=SHIFTJIS_CHARSET
5=HANGEUL_CHARSET
6=GB2312_CHARSET
7=CHINESEBIG5_CHARSET
8=OEM_CHARSET
9=JOHAB_CHARSET
10=HEBREW_CHARSET
11=ARABIC_CHARSET
12=GREEK_CHARSET
13=TURKISH_CHARSET
14=VIETNAMESE_CHARSET
15=THAI_CHARSET
16=EASTEUROPE_CHARSET
17=RUSSIAN_CHARSET
18=MAC_CHARSET
19=BALTIC_CHARSET

DomPDFAddImage

The DomPDFAddImage function is used to add images to an existing PDF file.

Note the function does not support processing an already encrypted PDF file.

Declarations

Call v.DomPDFAddImage(Byval szInput As String, Byval szImage As String,
Byval szPages As String, Byval iLeft As Double, Byval iTop As Double,
Byval iWidth As Double, Byval iHeight As Double) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - The file name and path of the PDF file to be opened.

szImage - The file name and path of the image file to be added.

szPages - Specify the pages in the PDF on which to add the image.

The szPages parameter has been defined as a string variable so a range of pages can be specified.

If szPages are left blank (for example "") all pages in the PDF document will be affected.

If szPages denotes a single page (for example "1") the specified page will be affected.

If szPages denoted a range of pages (for example "1, 3-4, 7") the specified range of pages will be affected.

iLeft - The left position to begin image output.

iTop - The top position to begin image output.

iWidth - The width of the image output. If set as zero (0) the original image width is used.

iHeight - The height of the image output. If set as zero (0) the original image height is used.

DomPDFAddOutline

The DomPDFAddOutline function is used to add an outline/bookmark of pages to an existing PDF file.

Note the function does not support processing an already encrypted PDF file.

Declarations

Call v.DomPDFAddOutline(Byval szInput As String, Byval szTitle As String) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - The file name and path of the PDF file to be opened.

szTitle - Specify the title of the root outline entry. If left blank will default to "Pages".

DomPDFAddOutlineFromFile

The DomPDFAddOutlineFromFile function is used to add an outline/bookmark of pages to an existing PDF file where the entries and page links are specified by an external text file.

Note the function does not support processing an already encrypted PDF file.

Declarations

Call v.DomPDFAddOutlineFromFile(Byval szInput As String, Byval szOutline As String, Byval szTitle As String) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - The file name and path of the PDF file to be opened.

szOutline - The file name and path of the outline text file.

The outline text file should structured so each outline entry is on a new line and indicates the outline entry text and the page number link separated by a pipe character (|).

DomPDFPrint

The DomPDFPrint function is used to print any PDF file to an attached printer.

Note the DomPDFPrint function does not support printing of encrypted PDF files.

Declarations

Call v.DomPDFPrint(Byval szInput As String, Byval szPrinterName As String, Byval iStartPage As Integer,
Byval iEndPage As Integer, Byval iPageScaling As Integer, Byval iAutoRotateCenter As Integer) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - A file name and path of PDF file to print.

szPrinterName - The name of the active printer to print to.

This is the printer name that appears in the Windows Print Manager.

Leaving the value empty ("") will print to the default printer on the machine.

iStartPage - The first page to print.

iEndPage - The last page to print.

If the number of pages is unknown the DomPDFPages function can be used.

iPageScaling - Control how to fit pages on a page.

This controls how printed pages are sized on the physical page. Options are as follows;

0 - No Scaling
1 - Fit To Paper
2 - Shrink large pages

iAutoRotateAndCenter - Control how to rotate pages on a page.

This controls how printed pages are rotated on the physical page. Options are as follows;

0 - Do not rotate pages automatically.
1 - Rotate pages to fit on the paper and center on the page.

DomPDFAddJavaScript

The DomPDFAddJavaScript function is used to add document and page level JavaScript to any PDF file.

Note the DomPDFAddJavaScript function does not support encrypted PDF files.

Declarations

Call v.DomPDFAddJavaScript(Byval szInput As String, Byval szActionLevel As String, Byval szActionType As String,
Byval iPageNumber As Long, Byval szJavaScript As String) As Long

Return Value

Returns 0 if successful or -1 if unsuccessful.

Syntax

szInput - A file name and path of a PDF file.

szActionLevel - The PDF level where JavaScript is added.

This is the location where JavaScript will be added to the PDF file. The options available are;

Document - Add the JavaScript at Document level.
Page - Add the JavaScript at Page level.
Open - Add the JavaScript at the PDF file open level.

szActionType - Depending on the action level, the type of JavaScript action to add.

The Document and Page action levels support different action types (or events). The options available are;

For Document action level; DC - Document Close, WS - Will Save, DS - Did Save, WP - Will Print, DP - Did Print.

For Page action level; O - Page Open, C - Page Close.

For Open action level; Not Applicable.

iPageNumber - For Page action level the page number to use.

This is the page number to use when the Page action level is used.

szJavaScript - The JavaScript to be added or a valid path and file name of a file containing the JavaScript.

This is the actual JavaScript to be added. Can be the actual JavaScript or the path to a file containing the JavaScript code.

DomPDFGetInformation

The DomPDFGetInformation function returns specified metadata from a generated PDF file.

Declarations

szValue = v.DomPDFGetInformation(Byval szPDF As String, Byval iKey as Long) As String

Return Value

Returns the specified metadata string.

Syntax

szPDF - The fully qualified file path and name of the PDF file.

iKey - The metadata to return.

0 - PDF Version
1 - Author
2 - Title
3 - Subject
4 - Keywords
5 - Creator
6 - Producer
7 - Creation Date
8 - Modified Date

Advanced Usage

Notes / Domino

DOMINO SERVER SETTINGS

DominoPDF does not need any specific server settings to operate, however as with any process which utilises the Domino HTTP task it's good practice to examine your settings for optimum usage.

In the Domino Directory (names.nsf) there are settings for controlling agent and web agent usage which can have an effect on DominoPDF.

Domino Directory > Server > Internet Protocols > Domino Web Engine > Web Agents > Run web agents concurrently?

Domino Directory > Server > Server Tasks > Agent Manager > Max concurrent agents

These settings can be adjusted accordingly to reflect the usage in your specific environment.

DOES DOMINOPDF REQUIRE A DEDICATED DOMINO SERVER?

DominoPDF does not require a dedicated Domino server, it just requires an active Notes HTTP task running on the server.

DOES DOMINOPDF SUPPORT DOMINO UNDER IIS?

DominoPDF works fine if Domino is running under IIS. As DominoPDF is called via LotusScript the web server has no effect on the interface.

DO I HAVE TO SET THE DEFAULT ACCESS LEVEL TO READER IN MY DATABASE ACL FOR DOMINOPDF TO WORK?

If you do not wish to use authentication then you will need to allow reader access or create anonymous access. However for security it is recommended you use authentication and pass a username / password to the DominoPDF software.

DOES DOMINOPDF SUPPORT RICH TEXT?

DominoPDF will convert output as displayed by the Domino HTTP task (ie. HTML as viewed in a browser) so any rich text styles will reflect this output accordingly. DominoPDF does not change any of the output provided by Domino.

If the output is not as desired then custom stylesheets etc. can be used to override the default Domino behaviour.

DON'T ALLOW URL OPEN NEEDS TO BE FALSE FOR CLIENT-SIDE USAGE

When using the client-side approach of DominoPDF the Application > Properties (Basic Properties) setting "Don't allow URL open" must be False (not checked), otherwise DominoPDF will create blank PDF files.

EXTERNALLY HOSTED IMAGES ARE NOT DISPLAYED

Notes / Domino has a setting for Image Security which prohibits showing remote images. "To ensure privacy, do not show remote images without my permission."

DominoPDF will respect this setting and therefore not display externally hosted images. Ensuring the option is not enabled will resolve the issue.

FILE AND DIRECTORY PERMISSIONS

As DominoPDF runs under the Domino restrictions you will need to ensure that the file path where you specified the PDF to be saved has appropriate permissions at the operating system and Domino restriction levels.

DOMINOPDF PERFORMANCE

There's a number of factors which can affect performance in DominoPDF. Firstly, it uses HTTP so if traffic is busy or you have a slow connection etc. speeds can be affected.

Next, DominoPDF processes HTML from a URL which can come in may different forms. Some URL's will return plain HTML, some will return HTML with CSS, some will return HTML with embedded styles, external references, images, etc.

DominoPDF will need to retrieve all the required elements (over HTTP) and then render them internally (HTML, CSS, images etc.) before the PDF conversion takes place.

So you can see that depending on the source, the time it takes to generate the PDF can take differing lengths of time. Best performance will be seen with a good HTTP connection and "clean" HTML returned by Domino or the URL source.

USING AN AGENT TO CREATE CONTENT

DominoPDF can convert any HTML content to PDF, no matter where it originates, however if client-side usage is needed and HTTP / URLs are not available an agent can be used to generate the appropriate output.

LotusScript can be used to write document values, layout, formatting etc. to a local / temporary HTML file which is then passed to DominoPDF.

Sub Initialize
Dim fileNum As Integer
Dim fileName As String
Dim oDoc as NotesDocument

fileNum% = Freefile()
fileName$ = "c:\data.html"

Open fileName$ For Output As fileNum%
Print #fileNum%, |<html>|
Print #fileNum%, |<body>|
Print #fileNum%, |<p>|
Print #fileNum%, oDoc.Subject(0)
Print #fileNum%, |</p>|
Print #fileNum%, |</body>|
Print #fileNum%, |</html>|

Close fileNum%

Call DoPDF(|c:\data.html|, |c:\data.pdf|, ||)
End Sub

A number of our customers have taken this strategy further by building reports, invoices and custom layouts for generating PDF output. By using a LotusScript agent to generate custom HTML you have full control over your PDF.

Attachments

WHAT FILE TYPES DOES DOMINOPDF SUPPORT FOR CONVERSION?

DominoPDF supports the following file formats for attachment conversion.

Document Formats

Microsoft Word 2007 document [MS OpenXML] (.docx)
Microsoft Word 97/98, 2000/2001/v.X, XP/2004 document, template (.doc, .dot)
Microsoft Word 6/95 document, template (.doc, .dot)
Microsoft Word for Windows 5 document (.doc)
OpenDocument Text, Text Template (.odt, .ott)
OpenOffice.org 1.0 Text Document, Text Template (.sxw, .stw)
Rich Text Format (.rtf)
StarWriter 3.0-5.0 document, template (.sdw, .vor)
StarWriter 1.0, 2.0 document (.sdw)
StarWriter DOS document (.txt)
AportisDoc (Palm) (.pdb)
DocBook (.xml)
Microsoft Word 2003 XML (.xml)
Pocket Word (.psw)
WordPerfect 4.2 DOS (.wp)
WordPerfect 5.1 DOS/Win (.wp)
WordPerfect 6.0-12.0 DOS/Win (.wpd)
WordPerfect for Macintosh 3.5e (WPD4)
WordPerfect for Macintosh 3.0-3.5.4 (WPD3)
WordPerfect for Macintosh 2.1 (WPD2)
WordPerfect for Macintosh 2.0.x (WPD2)
WordPerfect for Macintosh 1.0.x (WPD0)
Microsoft Works word processing documents (.wps)
Ichitaro 8/9/10/11 document, template (.jtd, .jtt)
Hangul WP 97 (.hwp)
WPS 2000/Office 1.0 (.wps)
Plain Text, Text Encoded (.txt)

Spreadsheet Formats

Microsoft Excel 2007 document [MS OpenXML] (.xlsx)
Microsoft Excel 97/98, 2000/2001/v.X, XP/2004 spreadsheet, template (.xls, .xlw; .xlt)
Microsoft Excel 5/95 spreadsheet, template (.xls, .xlw; .xlt)
Microsoft Excel 4.x Win spreadsheet, template (.xls, .xlw; .xlt)
OpenDocument Spreadsheet, Spreadsheet Template (.ods, .ots)
OpenOffice.org 1.0 Spreadsheet, Spreadsheet Template (.sxc, .stc)
Data Interchange Format (.dif)
dBASE (.dbf)
StarCalc 3.0 - 5.0 spreadsheet, template (.sdc, .vor)
StarCalc 1.0 spreadsheet (.sdc)
Lotus 1-2-3 1.x, 2.x spreadsheet (.wk1, .wks)
SYLK (.slk)
Comma Separated Values (.csv, .txt)
Microsoft Excel 2003 XML (.xml)
Pocket Excel (.pxl)
Quattro Pro 6.0 (.wb2)

Presentation Formats

Microsoft PowerPoint 2007 document [MS OpenXML] (.pptx)
Microsoft PowerPoint 97/98, 2000/2001/v.X, XP/2004 presentation, template (.ppt, .pps; .pot)
OpenDocument Presentation, Presentation Template (.odp, .otp)
OpenOffice.org 1.0 Presentation, Presentation Template (.sxi, .sti)
OpenDocument Drawing (.odg)
OpenOffice.org 1.0 Drawing (.sxd)
StarDraw 3.0/5.0 drawing (StarImpress) (.sda, .sdd)
StarImpress 4.0/5.0 presentation, template (.sdd, .sdp; .vor)

Graphic Formats

Windows Bitmap (.bmp)
Graphics Interchange Format (.gif)
Joint Photographic Experts Group (.jpg, .jpeg, .jfif, .jif, .jpe)
Portable Network Graphics (.png)
Portable Bitmap (.pbm)
Kodak Photo CD (.pcd)
Zsoft Paintbrush (.pcx)
Portable Graymap (.pgm)
Portable Pixelmap (.ppm)
Adobe Photoshop (.psd)
Sun Raster Image (.ras)
Truevision Targa (.tga)
Tagged Image File Format (.tif, .tiff)
X Bitmap (.xbm)
X Pixmap (.xpm)
AutoCAD Drawing Interchange (Exchange) Format (.dxf)
Enhanced Metafile (.emf)
Encapsulated PostScript (.eps)
OS/2 Metafile (.met)
Zsoft PC Paintbrush (.pcx)
StarWriter Graphics Format (.sgf)
StarDraw 2.0 (.sgv)
StarView Metafile (.svm)
Windows Metafile (.wmf)

Note OpenOffice needs to be installed on the same machine as DominoPDF for attachment conversion support.

DO I HAVE TO INSTALL THE WHOLE OF OPENOFFICE FOR ATTACHMENT CONVERSION?

At a minimum you must install the OpenOffice COM interface as this is used by DominoPDF.

Otherwise, you can select which OpenOffice components to install based on your attachment file types.

For example, if you only want to convert MS Word documents install OpenOfficeWriter. If you only want to convert MS Excel files install OpenOfficeCalc, etc.

OPENOFFICE INTERFACE SECURITY

When using DominoPDF to convert attachments the OpenOffice interface is used. In some cases, security settings may need to be adjusted to allow DominoPDF to interact with OpenOffice.

On the server machine where OpenOffice is installed, execute the following;

Start > Run > dcomcnfg

Navigate to: Component Services > Computers > My Computer > DCOM Config > OpenOffice.org 1.1 Text Document

Open the properties of OpenOffice.org 1.1 Text Document (right-click Properties)

Go to Identify tab

Choose the interactive user radio button

The idea behind this is to tell OpenOffice to run as the currently logged in user.

Alternatively, you can specify an explicit user.

If needed you may have to specify execution priviliges via the Security tab.

Note that instead of "The interactive user" setting you may need to add the account you are currently logged into to the DCOM setting.

Repeat the above process to any of the other OpenOffice DCOM entries.

Running Domino as a Service

If you run the Domino Server as a service you may need to enable the Log On used to interact with the desktop.

Open the Service properties for "Lotus Domino Server" and click the Log On tab.

Enable "Allow service to interact with desktop".

OPENOFFICE - THIS FILE CONTAINS LINKS TO OTHER FILES

When trying to open a spreadsheet document (for example, MS Excel) in OpenOffice that contains embedded data or external links a dialog is displayed prompting whether the links should be updated.

This file contains links to other files. Should they be updated?

As OpenOffice runs on the server this can cause issues as nobody is available to process the dialog and the conversion process therefore fails.

The solution is to adjust the options in OpenOffice to supress the message as follows;

Tools > Options > OpenOffice Calc > General - Updating - Update links when opening = Never

By setting the option to Never you shouldn't get the prompt / dialog box displayed.

OPENOFFICE CONVERSION FAILURE - URL SEEMS TO BE AN UNSUPPORTED ONE

If DominoPDF logging shows that your attachment / file conversion is failing with the error OpenOffice Conversion Failure.

OpenOfficeError: com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one

The error that was returned by OpenOffice typically means the specified file cannot be found.

Instead of passing the input file as simply "myfile.xls" the solution is to fully qualify the path, for example, "c:\temp\attach\myfile.xls" and in this manner OpenOffice will successfully find the file.

iNotes

INOTES COMPATIBLITY

iNotes makes heavy use of framesets, iframes and javascript, which is not supported by DominoPDF. Therefore when using the URL interface of DominoPDF all URLs should have the &ui=webmail argument appended to the end.

The &ui=webmail argument tells iNotes to output content in the original Domino webmail UI and provides HTML / DominoPDF compatible output.

For example; http://localhost/mail/dompdf.nsf/0/102CE45A2C0C92B5C12576790034301F/?OpenDocument&ui=webmail

INOTES BROWSER COMPATIBILITY

iNotes only works with certified browsers and will return a "Lotus iNotes has not been certified to work with this browser." error message if a browser is unrecognised.

iNotes identifies a browser by its User-Agent and an accepted User-Agent can be specified for DominoPDF by using the UserAgent= setting.

For example;

Call v.DoPDF(sURL, sPDF, "UserAgent=Mozilla/4.0 (compatible* MSIE 7.0* Windows NT 5.2* .NET CLR 1.1.4322* .NET CLR 2.0.50727*
.NET CLR 3.0.04506.30* .NET CLR 3.0.04506.648* .NET CLR 3.0.4506.2152* .NET CLR 3.5.30729)")

Note as DominoPDF uses semi-colons (;) for option delimiters the semi-colons in a user agent string can be replaced with asterisks (*) and DominoPDF will substitute semi-colons accordingly.

LOTUS INOTES HAS NOT BEEN CERTIFIED TO WORK WITH THIS BROWSER

iNotes only works with certified browsers and will return a "Lotus iNotes has not been certified to work with this browser." error message if a browser is unrecognised.

iNotes identifies a browser by its User-Agent and an accepted User-Agent can be specified for DominoPDF by using the UserAgent= setting.

For example;

Call v.DoPDF(sURL, sPDF, "UserAgent=Mozilla/4.0 (compatible* MSIE 7.0* Windows NT 5.2* .NET CLR 1.1.4322* .NET CLR 2.0.50727*
.NET CLR 3.0.04506.30* .NET CLR 3.0.04506.648* .NET CLR 3.0.4506.2152* .NET CLR 3.5.30729)")

Note as DominoPDF uses semi-colons (;) for option delimiters the semi-colons in a user agent string can be replaced with asterisks (*) and DominoPDF will substitute semi-colons accordingly.

Fonts & Styles

CAN DOMINOPDF SUPPORT DIFFERENT CHARACTER SETS?

DominoPDF can convert different character sets, such as Simplified Chinese or Arabic, however there are some requirements as follows.

- DominoPDF will determine the character set from the CodePage specified in the HTML attribute. For example;

Simplified Chinese = <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

Arabic = <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">

- DominoPDF requires a multi-byte font to be installed on the same machine as the DominoPDF software. We recommend the Bitsream Cyberbit font which is available for free download.

- DominoPDF (may) require an instruction to use the multi-byte font. For example;

Call v.DoPDF(sURL, sPDF, "OverrideFont=Bitstream Cyberbit")

HOW TO CONTROL FONT EMBEDDING?

By default DominoPDF embeds fonts into the PDF.

The NoEmbedFonts setting in the DoPDF() method allows you to specify which fonts are not embedded into the PDF and therefore referenced directly.

Call v.DoPDF("http://...", "c:\test.pdf", "NoEmbedFonts=Barcode3of9")

Multiple fonts can be separated by using a * delimeter for example, NoEmbedFonts=Barcode3of9*Arial.

DOES DOMINOPDF SUPPORT RIGHT-TO-LEFT LANGUAGES?

No, DominoPDF does not support right-to-left languages. Characters are converted correctly but any tags are not processed.

HOW DO I ADD PAGE NUMBERS To A PDF?

There are a couple of ways to add page numbers to PDF files generated from DominoPDF.

1. Use HTMLHeader or HTMLFooter settings.

To add page numbering to a PDF you can control it via the settings option in the DoPDF() method.

Call v.DoPDF(sURL, sPDF, "HTMLFooter=Page {$PAGE} of {$PAGECOUNT}<br>;BottomMargin=20")

The HTMLFooter= option controls the content of the footer with reserved tags for {$PAGE} and {$PAGECOUNT} and the BottomMargin= option controls the height of the footer area so the text is displayed correctly (by default in MM unless UseInches=True is specified).

2. Use DomPDFPages() and DomPDFAddText() methods.

If you want to add page numbers to a PDF after it has been created or add page numbers to any PDF (not necessarily created with DominoPDF) you can use a combination of the DomPDFPages() and DomPDFAddText() methods.

DomPDFPages() will get the page count of any PDF.

iPage = v.DomPDFPages(sPDF)

DomPDFAddText() can "stamp" text on any PDF.

for t = 1 to iPage
Call v.DomPDFAddText(sPDF, "Page " & CStr(t), CStr(t), 10, 10, 50, 0, 9)
Next t

HTTP & HTML

DO I NEED INTERNET EXPLORER, FIREFOX, CHROME OR SIMILAR BROWSER TO CREATE PDF FILES FROM DOMINOPDF?

No, DominoPDF has its own internal HTML renderer and HTTP task so no additional installations are required.

DOES DOMINOPDF SUPPORT HTTP AUTHENTICATION?

Yes, if the database ACL you are accessing does not have default reader or anonymous access you can pass the username / password to authenticate with the database.

The DominoPDF method would be as below;

Call v.DoPDF("http://www.google.com", "c:\test.pdf", "WebUsername=username;WebPassword=secret")

If the URL connection requires proxy authorisation the HTTP proxy username and password can be specified.

HOW DO I KNOW WHAT AUTHENTICATION METHOD MY SERVER IS USING?

DominoPDF supports Basic HTTP Authentication and NTLM Authentication depending on which headers the web server returns.

By using the WebUsername and WebPassword attributes DominoPDF will pass authentication details as appropriate if the authentication protocol is supported.

If you are using a protocol DominoPDF does not support you can confirm this by enabling DominoPDF logging and examining the output. To enable logging you can add an option to the DoPDF() method as follows;

Call v.DoPDF(sURL, sPDF, "WebUsername=username;WebPassword=secret;LogFile=c:\domlog.txt")

HOW DO I PASS DOMAIN DETAILS FOR NTLM AUTHENTICATION?

- Pass a blank WebUsername and/or WebPassword and the current user credentials will be used (logon details from user machine).

- Pass WebUsername and WebPassword and the MachineName\WebUsername credentials will be used (MachineName from user machine).

- Pass WebUsername as "DOMAIN\Username" and WebPassword and the specified DOMAIN and credentials will be used.

DOES DOMINOPDF SUPPORT SECURE HTTP (HTTPS) AND SECURE SOCKET LAYER (SSL)?

Yes, HTTPS / SSL support is provided with DominoPDF together with certificate handling.

DOES DOMINOPDF SUPPORT FRAMESETS OR IFRAMES?

No, DominoPDF does not support Framesets or IFrames. However, any of the frame contents will work. Simply modify your URL to point to the frame content instead of the frame itself.

HOW DO I CONTROL / EXPAND SECTION?

On the web you can control section expanding by passing an operator in the URL.

As an example;

To collapse a section

http://domain/test.nsf/section?ReadForm&ExpandSection=-1,-2

To expand a section

http://domain/test.nsf/section?ReadForm&ExpandSection=1,2

HOW DO I FORCE / CONTROL PAGE BREAKS IN DOMINOPDF?

DominoPDF supports page breaks via the CSS page-break-before/inside/after styles.

You can either use style-sheets in your Notes document design, for example;

<style type="text/css">
.break {page-break-after: always}
</style>

Or a simpler method of in-line HTML, for example;

<p style="page-break-after: always">

By entering this CSS style in your document HTML DominoPDF with recognise the style tags and force a page break accordingly when rendering to PDF.

PDF & Adobe Reader / Acrobat

DO I NEED ADOBE ACROBAT TO CREATE PDF FILES FROM DOMINOPDF?

No, DominoPDF operates completely standalone and creates PDF files natively without the need for Adobe Acrobat or any other third party / external PDF creation tools.

CAN DOMINOPDF DISABLE THE SAVE BUTTON IN ACROBAT?

There's no way to disable the Save button on the Adobe Reader "toolbar" - not from DominoPDF or from any other product.

You can just stop someone from re-assembling the PDF contents.

The Save A Copy action in the reader is just like copying the PDF file at the system level with a new name - so there's no definite way to prevent it from happening.

The encryption options you can enable with DominoPDF will stop someone from distilling the PDF to a new copy, printing it, copying text/images etc. but they will typically always have access to the file itself.

License

DominoPDF Licence Terms & Conditions

Changelog

DominoPDF Release Notes