For the last 9 - 12 months I have been doing a lot of work extracting data from Notes/Domino for use in other systems. This included Notes Rich Text data and so needed to convert it to a mixture of plain text and/or HTML. Unfortunately, the environment was running ND 9.0.1 FPx and upgrading to a more recent version was not an option, so I could not take advantage of some of the newer features such as the NotesRichTextItem convertToHTML function. In the end I used C API functions (called from Lotusscript) to convert any rich text items to HTML which worked great.
However, recently I needed more control over the HTML that was being generated when it came to fonts. I was already using the HTML conversion option "XMLCompatibleHTML=1" so I could have tried to process the generated HTML and make the required alterations, however my investigations also found the following two pages:
This was just what I needed, so gave it a try.
First, just setting FontConversion=1 did result in some differences, as illustrated in the following table.
|Without FontConversion=1||With FontConversion=1|
|<font size="5" color="#ffffff" face="Arial">Document Header</font>||<font size="4" color="#ffffff" face="Arial">Document Header</font>|
|<s>Strikethrough text</s>||<font size="2" face="sans-serif"><s>Strikethrough text</s></font>|
|<tt>Default monospace text</tt>||<tt><font size="2">Default monospace text</font></tt>|
|Default serif text||<font size="2" face="serif">Default serif text</font>|
|Default sans-serif text||<font size="2" face="sans-serif">Default serif text</font>|
|Default user interface text||<font size="2">Default user interface text</font>|
|Default multilingual text||<font size="2">Default multilingual text</font>|
However, I really needed to try and replace the <font> tags with <span> tags that used style and/or class attributes. So I tried some of the other settings as documented, but they did not appear to work.
So I raised a ticket with HCL support and eventually got a list of new settings to try, but unfortunately they did not come with any instructions! So it was a case of trying each setting with a number of different values to see how it affected the HTML generated by Domino. Anyway, incase anyone else has a similar need, I hope the information below is useful.
First, there are a number of "spec" settings:
These appear to use values 0, 1, 2, 4, 8, 16 and 32 to indicate how the HTML should be generated for each of the different settings, e.g.
- 0 (none) - do not generate anything for the spec
- 1 (native) - use the default HTML generation for the spec
- 2 (outer span tag with style attribute) - surround any native tag with a <span> tag that specifies a style attribute, e.g. <span style="font-family: sans-serif ; ">........</span>
- 4 (inner font tag with style attribute) - use a <font> tag with a style attribute inside any native tag, e.g. == <font style="font-family: sans-serif ; ">........</font>
- 8 (native tag with style attribute - only applicable if there is a native tag) - use the native tag with a style attribute, e.g. <tt style="font-family: monospace">........</tt>
- 16 (outer span tag with class attribute) - surround any native tag with a <span> tag that specifies a class attribute, e.g. <span class="domino-font-sansserif ">........</span>
- 32 (native tag with class attribute - only applicable if there is a native tag) - use the native tag with a class attribute, e.g. <tt class="domino-font-monospace">........</tt>
Then there are a number of "tag" settings to configure if an extra tag should be used inside whatever is generated by the "spec" setting:
The available options (at least in ND 9.0.1) appear to be:
- 0 (none) - do not generate tag
- 1 (native / default) - generate a native tag (<b> for bold, <u> for underline, <i> for italic and <s> for strikethrough)
- 2 (span) - generate a <span> tag
- 3 (em) - generate an <em> tag
- 4 (strong) - generate a <strong> tag
- 5 (mark) - generate a <mark> tag
So there are plenty of options / combinations available.
For my own needs, to replace <font> tags with <span> tags, it was a case of setting all the "spec" options to 2 and the "tag" options to 0.
e.g. without the settings, the resulting HTML was:
<font size="4" color="#ffffff" face="Arial">Document Header</font>
but with the additional HTML conversion options set I now get:
<span style="font-family: Arial ; font-size: 15pt ; color: #ffffff ; ">Document Header</span>
Whilst I am using these options with C API functions, I would hope they also work if specified via other methods such as:
- Setting the DominoHTMLOptions notes.ini to control conversion at a server level
- Adding a $$HTMLOptions field to a form to control conversion at a form level
- Adding one or more $$HTMLOptions_fieldname field(s) to a form to control conversion at an individual field level
However, I have not yet had the opportunity to test these other methods.