Controlling the Visio HTML Wizard AddOn via Automation | |
Home Visio This page |
Via the SaveAs dialog, Visio 2000 includes the ability to render a page or series of pages in a plausible HTML format. This generates a series of HTML pages with the Visio drawings embedded as GIFs, and optionally in VML ("Vector Markup Language").
Numerous developers have naturally wanted to invoke this functionality from Automation so that their users don't have to operate that functionality. However, it is built as a separate wizard, and though that wizard is implemented in a DLL (VISHTMLO.dll), and contains a Type Library (VISHTML6), it is not documented by Visio/Microsoft.
Herewith, then, a stab at documentation for this wizard's Automation interface. Much of the credit for the footwork should go to Kevin Wyatt of Viswest Integrated Solutions in Australia, who in turn credits some of this to a nameless developer at Visio who long ago "leaked" some of the Visio 5 HTML version's secrets.
The VISHTML6 library defines a number of objects that must be created and built into a structure in order to specify and then run the HTML export. Indeed, the length that you have to go to seems rather excessive considering the simplicity of the result. Doubtless there was a grand scheme behind this wizard, but it apparently didn't reach full fruition before shipping. Consequently, there's probably even more functionality that you can wring out of the mechanism, if you care to explore farther than this discussion here. But for now, on with the explanation of how to at least make the darn thing happy enough to be cooperative.
Because of the moderate complexity, I've created a diagram showing all the objects, their relationships and their properties and methods. The diagram is difficult to present on a webpage (HTML wizard not withstanding!), so I've packaged the diagram with a demo vsd, and I highly recommend downloading and printing the diagram before proceeding.
Download Demo Code and Object Diagram.
Once you have the diagram and demo code the following explanation will make some sense. The basic plan works like this:
You can see in the object diagram the kinds of properties you can set at each level, and the demo code demonstrates setting a few of those properties.
There are several elements of the apparatus not shown in the object diagram. These include:
There are a number of properties and methods not exercised by the demo code. Here are some additional notes on a few of them:
Object | Property or Method | Discussion |
Utilities | LoadThemes | This is the key method used to create and initialize the Themes structure. See sample code. |
CreateDefaultTheme("c:\Temp") | Can be used to recreate the Default theme's template files. | |
DefaultThemeName | Returns "Default". May differ in other languages? | |
IsThemeRegistered | Seems to always return True regardless of whether named theme exists. | |
IsDefaultThemeRegistered | Seems to always return False. | |
SaveDefaultTemplate( "c:\Temp\Default2\file.htm") |
This appears to be a vestige left over from Visio 5 as it saves an HTML file which refers to Visio 5 and is unlike any produced by wizard in Default template files. | |
ExportData | VMLFilter | If you assign a filter (presumably the VML filter) to this property, then the wizard will produce VML output. If you don't want VML output, do not assign a filter to this property. |
MapType | 1 = client side, 2 = server side | |
Filters | Parent | Set Filters.Parent = Application ...will cause the wizard to find all of the available filters and add them to the Filters collection. |
Exports | (ie: the ExportPages collection) | The wizard fills this in during the ExportMgrDrawing.Export function. Your code can then use this collection to find and work on the files some more if it needs to. |
This is simply a printout of the registry settings pertaining to the HTML wizard as installed by default.
[HKEY_CURRENT_USER\Software\Visio\Solution\Save As HTML] [Application] OutputFolder=C:\junk\visiohtmltest2 Base Name=TwoBoxes4.htm Theme=Default VML Alternate Filter=GIF VML Use Alternate=01,00,00,00 Filter=GIF Optimization=00,00,00,00 Zoom=64,00,00,00 Horizontal DPI=60,00,00,00 Vertical DPI=60,00,00,00 Screen Width=80,02,00,00 Screen Height=e0,01,00,00 JPEG Quality=64,00,00,00 Interlace=ff,ff,00,00 Enable Image Mapping=01,00,00,00 Image Mapping Type=01,00,00,00 CGI Image Map= [Themes] [Default] BasePath=C:\TEMP\Default Root=frame.htm VML=_vml.htm Raster=_raster.htm Doc1=lt_off.gif,,0 Doc2=lt_over.gif,,0 Doc3=rt_off.gif,,0 Doc4=rt_over.gif,,0 Doc5=_frame.htm,<!--FNAME_BASE_NOEXT-->_frame.htm Doc6=_nav.htm,<!--FNAME_BASE_NOEXT-->_nav.htm Doc7=_utils.js,<!--FNAME_BASE_NOEXT-->_utils.js DocCount=07,00,00,00 [Document Substitutions] BODY_BGCOLOR=#FFFFFF BASE_TARGET=<base target="_top"> [Page Substitutions] PAGE_JUMP_JS=javascript:GoToPage(<!--PAGE_JUMP_TGTIX-->-1)
Article Created: 2000-08-14 Last edit: Last edit: 00-10-30 Graham Wideman
Go to: DiagramAntics.com