Detagger Help Index
Detagger is a utility designed to process files containing markup tags. The program has various options to selectively remove some or all of the tags in the file. 
The document describes Detagger version 2.4, which was released in June 2005. 
Detagger Help Index	1
Installation	4
Windows installation	5
Installing the Windows GUI version	5
Installing the console version	5
OpenVMS version of Detagger	5
Running the software	5
Running as a Windows application	5
Main Dialog	5
Input selection	6
Conversion type selection	6
Output selection	6
Output types	6
Output Directory	7
Menu Bar	7
File menu	8
Conversion options menu	8
Markup manipulation	8
Conversion to text	8
Configuration Files menu	9
Selecting the Text Commands File	9
Selecting the Text fragments File	9
Load policy file	9
Save Policy File	9
Resetting policies to default values	10
Settings menu	10
Diagnostic settings	10
Drag and drop settings	11
Results viewers settings	11
Use of policy file settings	12
Tip of the day	12
Language menu	12
View menu	13
Results of last conversion	13
Help menu	13
Update menu	14
Status window	14
Console version	14
The /CONCAT command line qualifier	15
The /CONSOLE command line qualifier	15
The /DETAG command line qualifier	15
The /HELP command line qualifier	15
The /LOG command line qualifier	15
The /OUTPUT command line qualifier	16
The /OVERWRITE command line qualifier	16
The /POLICY command line qualifier	16
The /SILENT command line qualifier	16
The /SUBFOLDERS command line qualifier	16
The /TREE command line qualifier	16
Running from the 'SendTo' menu	17
Working with Unicode	17
What is Unicode?	17
Unicode Byte Order Marks (BOMs)	18
Auto-detecting Unicode input	18
Creating Unicode output	18
Controlling Unicode handling through use of policies	18
Using policy files	19
What are Policy files?	19
Alphabetical list of Detagger policies	20
Markup removal policies	21
Detag policies	22
Remove All Tags	22
Remove All HTML Tags	22
Remove <!DOCTYPE> tags	22
Remove HTML <HEAD> section	22
Remove HTML-style comments	22
Remove HTML <SCRIPT> section	23
Remove HTML <OBJECT> tags	23
Remove HTML <DIV> tags	23
Remove HTML <SPAN> tags	23
Remove HTML <FORM>..</FORM> tags	23
Remove HTML <FONT> tags	23
Remove emphasis tags	23
Replace hyperlinks by the display value	23
Remove style sheet	24
Remove HTML <IMG> tags	24
Remove non-standard tags	24
Keep deprecated tags	24
Remove non-standard tag attributes	24
Keep deprecated tag attributes	24
Remove all non-HTML tags	24
Remove all x-tags used in mail messages	25
Remove Microsoft Office tags	25
Detag tables policies	25
Remove HTML table tags	25
Remove HTML <P> tags from tables	25
Remove HTML alignment attributes from tables	25
Remove HTML color attributes from tables	25
Remove HTML size attributes from tables	26
Tag manipulation policies	26
Convert tags to lower case	26
Convert tags to UPPER case	26
Replace entities by text	26
Allow ANSI alternatives (e.g. space for &nbsp;)	26
Allow 8-bit ANSI values in output	26
Text conversion policies	27
Data Extraction policies	27
Show only table data	28
Minimum table depth	28
Maximum table depth	30
Output table format	30
Convert table to plain text	30
Convert table to comma-delimited data	30
Convert table to tab-delimited data	30
Convert only innermost tables	31
Add delimited table markers	31
Text Format policies	31
Page Layout options	31
Preserve all white space from the original source	32
Impose a page width on the output	32
Target page width	32
Right justify the output text	32
Output indentation positions	32
Bullet options	32
Bullet point characters	32
Text bullet characters	33
List item templates	33
Heading options	33
Heading underline characters	33
Miscellaneous Formatting policies	34
Dialogue options	34
Look for dialogue lines	34
Apply extra dialogue checks	34
Break lines where dialogue starts in the middle	34
Other Options	34
Remove all horizontal rules and lines	34
Highlight bold and italic text	35
Unicode Options	35
May add Unicode marker to output file	35
Input text encoding	35
Text Hyperlink policies	35
Preserve hyperlinks in text output	36
Omit email hyperlinks from the output	36
Omit local hyperlinks from the output	36
Text to replace omitted links by	36
Add URL references at end of file	36
Display link URLs	36
Replace <IMG> tags by a text marker	36
Use the ALT attribute to replace <IMG> tags	37
Text Marker policies	37
End list marker	37
End table marker	37
Start list marker	37
Start table marker	37
Text paragraph policies	37
Output each paragraph on a single line	38
Preserve short lines	38
First line indent for paragraphs	38
Treat short lines as paragraph endings	38
Insert gap between sentences	38
Text Table policies	38
Attempt to parse tables	39
Table border options	39
Add border to all tables	39
Suppress borders on nested tables	39
Allow blank row separator lines	39
Table width options	39
Adjust table to page width	40
Target table width	40
Ignore table WIDTH attributes	40
May break words to fit target width	40
Nested Table scaling factor (percent)	41
Miscellaneous Table options	41
Allow headings inside tables	41
Default table indentation	41
Miscellaneous policies	42
Configuration file policies	42
Fragments File	42
Text Commands File	42
Other policies	42
Allow by-line to be used for Author field	42
Concatenate results into one file	42
Lines to ignore at start of file	43
Lines to ignore at end of file	43
Using a Text Fragments File	43
Header and footer fragments	43
Default header and footer	44
TEXT_HEADER Tags	44
Separator fragments	45
Fragment tags	46
The DATA fragment tag	46
Using a Text Commands File	46
Text Commands available	47
Text Command : ignore_line	47
Text Command : remove_text	47
Text Command : replace_text	47
Text Command line elements	47
line_selection	47
line_match	48
match_type	48
replace_type	49
An example use of a Text Commands File	49
Ordering your copy	50
Windows Version	50
API version	50
Detagger on the Web	51
Upgrades	51
Change History	52
Version 2.4 (June 2005)	52
Changes made in 2.4	52
Policies added in 2.4	52
Version 2.3.2 (September 2004)	53
Changes in version 2.3.2	53
New policies in version 2.3.2	53
Bugs fixed in version 2.3.2	53
Version 2.3 (April 2004)	54
Changes in Version 2.3	54
New policy options in Version 2.3	54
Version 2.2 (May 2003)	55
Changes in Version 2.2	55
New features in Version 2.2	55
Version 2.1 (March 2003)	55
Changes in Version 2.1	55
New features in Version 2.1	55
Version 2.0 (December 2002)	56
Changes in Version 2.0	56
New features in Version 2.0	56
Version 1.0 (August 2002)	57
Documentation available	57
Acknowledgements	57

Installation
The shareware version of Detagger is made available over the web from the download page.  Once you register you can download the full version (no nags, no limits), and are entitled to free upgrades for an arbitrary (equals "my decision is final") period of time. 
Installation will vary according to the type of install kit you've downloaded, but in each case you first download the .zip file appropriate to your system and unzip. 

Windows installation
The current version of the software makes updates to your Registry.  See the Install notes that come with the software for a description of the registry settings used. 
Installing the Windows GUI version
The standard installations use InnoSetup to offer install and uninstall options.  To use this version, unzip the file and then run the Setup program.  This will move the files to a directory, and create all icons etc. 
Once installed, InnoSetup will also offer an uninstall option. You can access this via Control Panel | Add/remove software. 
Installing the console version
The console version simply comes in a .zip file.  The documentation is not included as this is the same as the Windows version. 
Simply unzip the console version to the folder of your choice. 

OpenVMS version of Detagger
Sorry.  No VMS distribution is planned at this time. 
That said, the software is largely developed under VMS, so if there is enough interest this may change.  Email info<at>jafsoft.com if you're interested (replace the "<at>" by "@"). 

Running the software
The software is available as both a Windows program and a console program. The console version can be run from the command line, and is better suited for use in command files and batch conversions. 

Running as a Windows application
Detagger can be invoked as a normal Windows application.  On start-up you will be presented with the main window.  This consists of a menu bar across the top of the window, and some data entry fields in the main body of the window. 

Main Dialog
To convert your files, take the following steps :- 
1)	Select the files to be converted using the input selection options. You can type in a wildcard and - if you want - ask the software to search in sub-folders. 
2)	Select the conversion type you want.  You can convert to text, or selectively remove markup. 
3)	Choose the type of output you want.  You can output the results to files, or to the clipboard.  If you've selected multiple files (e.g. by supplying a wildcard) you can choose to have all the results concatenated into one big results file. 
4)	Choose the Output Directory you want.  You can output to the same directory as the input files, or to a directory of your choosing.  If you are converting files in sub-folders, then you can choose to replicate the folder structure under the output directory. 
5)	Options allowing you to fine tune the conversion can be found on the conversion options menu.  This has separate sub-menus for conversion to text and markup manipulation 
6)	Alternatively, if you've previously saved some conversion settings to a "Policy File", then you can re-load it.  If you've loaded the policy file before, it will be accessible via the drop-down list. (For a fuller description see policy files) 
7)	Once you've made all your selections, press the Convert File(s) button at the bottom.  The status window will briefly appear whilst the conversion proceeds, displaying messages, and a results viewer may be launched to display the results.  _(You can control this behaviour using the settings menu)_. 
8)	If you've fine tuned your conversion and want to save the options for use next time, save them to a policy file by using the Save Policy File option on the Conversion Options menu.
Input selection
Normally you need simply select the input file(s) using the Browse button, and the rest of the fields will be set to default values. If you want to use wildcards, type the file specification in the file(s) box directly 
If you check the Search Sub-folders option, the program will look for matching files in sub-directories. 
Conversion type selection
The program supports a number of conversion types.  You should select the one that you want to perform. 
Convert to text

	The output will be a plain text version of the
input file. You can fine tune the conversion to
text by using the text conversion policies 	
 	 	
Selectively remove markup

	The output will be HTML, with some of the tags
selectively removed. You can control which by
using the Markup removal policies.	
If you're removing markup (as opposed to creating text files), then you will typically be creating HTML files from HTML files.  This means you run the risk of asking the program to overwrite the input file with the results.  If this is what you want, you will need to check the May overwrite existing files option. 
Output selection
When you select your input, the output will default to being a file in the same directory.  However, there are a number of options available to you. 
You can select the output type.  The default is to file(s), but you can also output to the clipboard.  When converting wildcards the clipboard option is only useful if you have a clipboard manager in place, otherwise only the last file will be held there. 
When converting to file, you can select the output filename.  This is not a sensible choice when using wildcards to select the input file(s).  If you don't change this field the output file will match the input filename, but my have a different extension. 
When converting to file, you can select the output directory.  If you are converting wildcard files and including sub-directories, this option will put all the files in the one directory.  There is no option at present to output to a parallel directory structure. 
Output types
The program supports a number of output types that determine where the output should go.  You should select the one that you want to perform. 
Output text to file
The output will be a file.  Depending on the type of conversion performed, the file will either be a HTML file or a plain text file 
Output to the clipboard
You can use the Conversion Type to select the option of placing the generated output onto the Windows clipboard, ready for use in other Windows applications. 
Using Detagger in this way can be a very powerful technique which allows you to merge converted text with more traditionally authored content. 
This approach becomes even more powerful if you use a Clipboard extender like ClipMate (see www.thornsoft.com) to remember and organise everything to the clipboard.  You could convert a few files, and then use ClipMate to recall the pasted text at your leisure for insertion into your other files. 
Concatenate results into one file
When you select a conversion type of Concatenate results into one file, all your results will be added together in one big results file. 
Converting to text
When you're converting to text, the output will be one big text file, with the results from converting each input file added after each other. 
Removing markup
When selectively removing markup the output will be one big HTML file.  This file will inherit the <HEAD> and <BODY> tags (which will include any <TITLE> from the first input file).  All other <HEAD> tags will be discarded.  Because of this many of the results properties (e.g. style sheets and <META> tags) will be whatever was in the first file. 
The validity of the resulting HTML file will depend entirely on how well the markup of the multiple files goes together.  It's a classic case of garbage in, garbage out 
File separators
In the output file a separator can be added between the results of one input file and the next.  These are defined using the text fragment feature. 
When creating a text file, the separator fragment is called TEXT_SEPARATOR, and when creating a HTML file it's HTML_SEPARATOR. 
In the registered version both separators are absent by default unless you choose to define these fragments.  In the 30-day trial, both separators contain short messages. 
Output Directory
When outputting to file, there are a number of options for choosing where the output files will go. 
The default is to output the files to the same directory as the input files. When the conversion type is set to selectively remove markup this has the potential to overwrite the original files.  For this reason you have to select the 'May overwrite the input files' option. 
Alternatively you can choose to output files to a different directory.  In this case the program will overwrite any files already there because these are not the input files. 
Finally, if you have selected the 'Search sub-folders' option, you can elect to replicate the input directory structure under the output directory, rather than have all the files found placed in just the one directory. 
Menu Bar
The main menu bar appears at the top of the main screen.  It has the following options:- 
File 	File options	
 	 	
Conversion Options 	Options that affect the conversion	
 	 	
Settings 	Edit the program's settings	
 	 	
Language
	Select the language you'd like the program's
user interface to be in	
 	 	
View
	View the created HTML files or the messages
for the last conversion	
 	 	
Help 	Various help files and on-line resources	
 	 	
Update menu 	Check for more recent updates	
File menu
The file menu offers the following options:- 
Convert
	This will prompt you for a file to convert and will then
convert the selected file(s).	
 	 	
Load policy file
	Loads settings previously saved to a policy file.
See policy files 	
 	 	
Save policies to file
	Save program setting to a policy file.
See policy files 	
 	 	
Exit	Exit the program.	
Conversion options menu
The Conversion Options menu allows you to alter the parameters of the conversions that you do.  These options can be saved in policy files for later use.  The options available include :- 

Markup manipulation
This option allows access to dialogs that allow the options ("policies") that control markup removal to be adjusted 
Detag policies 
Detag Tables policies 
Tag manipulation policies 

Note	These options only apply when the conversion type selection has been set to "selectively remove markup"

Conversion to text
This option allows access to dialogs that allow the options ("policies") that control the text conversion process to be adjusted 
·	Data Extraction
·	Text formatting
·	Hyperlink and Image handling
·	Added markers new in V2.3
·	Paragraphs and sentences new in V2.3
·	Table handling
·	Miscellaneous policies
Note	These options only apply when the conversion type selection has been set to "convert to text"

Configuration Files menu
The Config File Location menu allows you to specify the location of additional configuration files.  The locations you select will be stored in your policy file, so in a sense these files act as extensions of the policy file, but by being stored in separate files the same configuration files can be shared by multiple policy files. 
The options on this menu allow you to select do locate following :- 
·	Text Commands File
·	Text Fragments File
Selecting the Text Commands File
This option allows you to select the Text Commands File you wish to use. 
Selecting the Text fragments File
This option allows you to select the Text Fragments File you wish to use. 

Load policy file
Detagger has many program options known as "policies" to help you tailor the conversion process.  These policies can be saved in a policy file for later re-use in future conversions.  This dialog screen is primarily intended to allow you to load a previously saved policy file 
For a fuller description see the section on policy files. 
Options on this screen include: - 
Load policies from an existing policy file 
Save policies to a policy file for later re-use 
Reset all policies to their default values 
Save Policy File
This window is displayed whenever you wish to save your policies to a file, usually for use in later conversions. 
To save the file, simply select the policy file name, usually with a .pol extension. 
This window contains a radio button with two options: 
Save only those policies that have changed 
If this option is selected, then only those policies that have been loaded from an existing file and/or been edited during the current session will be saved. 
This is the recommended option, as it will exclude all policies that have been set up correctly automatically. 
Save all policies 
If this option is selected, that all policies are written to file. This is a good way of documenting the policies used, but is usually too restrictive to be loaded as input into conversions of other files. 
The saved file is a text file designed so that it may be manually edited and reloaded.  If you do so, take care not to change the key phrases at the start of each line. 
Note: If you find that conversions that used to work "stop working" it's possibly because you're using a complete policy file.  If you find this happens, try creating a new policy file from scratch, or manually removing options from your existing policy file. 
Resetting policies to default values
This option will reset all conversion options ("policies") to their default values.  If a policy file has been loaded, it will be unloaded. 

Settings menu
The program settings menu allows you to customise the way Detagger executes each time it is invoked. 
This menu has the following options: - 
Diagnostic Settings
	Set message filters and alter the error reporting level to
control the number and type of messages generated during conversions	
 	 	
Drag and drop settings
	Set the program's properties when invoked by
dragging files into the icon on the desktop	
 	 	
Results viewers settings
	Specify the viewers to be used for viewing
results files, and their method of invocation	
 	 	
Use of policy file settings 	Specify any default policy file to be used.	
In addition to the above sun-menus, this menu allows you to toggle the following options, indicated by tick marks. 
Show Tool Tips	If checked tool tips will be available to offer help on the controls on each dialog screen
Show Status Dialog	If checked the Status Window will show during the conversion, showing messages describing how the conversion is going.
Automatically view results	If checked a file viewer will be launched after the conversion to view the results.  This will either be a HTML browser of a text editor depending on the type of conversion being done. See results viewers settings 
Remember settings on exit	If checked the program will remember the selected files and conversions details for next time
Tip of the Day	If selected the 'Tip of the Day' screen is shown and you can choose whether or not this should also be displayed on startup.
Diagnostic settings
These options allow you to set the level of error reporting, or to suppress messages of various types from being displayed during conversion. 
The types of messages include :- 

	INFO messages
	Informational messages. These convey information
telling you what was been done and why.	

	WARNING messages

	Warning messages. These tell you that something
you have requested has not been done, or something
has been done which may not be correct. It's possible
you may be able to take corrective action.	

	TAG ERROR messages
	Tagging errors. Only occur when you use the
preprocessor in-line tags and directives.	

	PROGRAM ERROR messages

	Program errors. The program has detected it
has done something wrong. The conversion may still
be successful, but there is nothing you can do about
such messages except report them to the program's
author at info<at>jafsoft.com	
 	 	 	
Drag and drop settings
These options specify the behaviour of Detagger when invoked via drag and drop (i.e. by dropping a file icon on the program's icon). 
Show the status screen

	The status dialog, showing messages
reporting how the conversion is going
should be shown.	
 	 	
View results in browser
once complete

	The selected viewer (browser) for the
results files should be invoked on the
last file converted once conversion is
complete	
 	 	
Start program after
conversion	The program should be launched in Windows
mode once the conversion is completed.	
Results viewers settings
This identifies the viewers to be used whenever Detagger launches an application to view a results or documentation file.  Viewers may be required for both HTML (when detagging) and TEXT (when converting to text) files. 
Automatically view results files 
You can elect to have results viewed automatically after each conversion.  This will normally result in the named application being launched to view the last file converted. 
Command used to view HTML files 
For HTML, you can elect to use Dynamic Data Exchange (DDE) to have the results displayed in a currently active browser.  This can be quicker and more efficient that launching a new instance of the browser each time.  You should ensure your DDE browser matches the program named as the default browser so that if not already active, the program can start a fresh instance. 
When DDE is used the results will vary from browser to browser. IE for example will come to the front, whereas Netscape will not, and if it is minimised you won't see the results until you maximise the browser again. 
NOTE:  On some systems problems can occur with DDE that will cause the program to hang whenever it attempts to display a HTML file.  When this happens the program will need to be stopped via the task manager.  The next time the program runs it will detect that this problem has occurred and disable the use of DDE. 
Add "file://localhost/" prefix 
For HTML files viewed from your local hard drive the prefix "file://localhost/" should be used in place of the "http:/" used for Internet access. 
Unfortunately some browsers (take a bow IE 3.0) do not support this, so the addition of this prefix may be disabled if you're using such a browser. 
Command used to view TEXT files 
For TEXT files, DDE is not currently available, so you simply provide the command to view TEXT files (usually just a text editor or NotePad). 

Use of policy file settings
Using a default policy file 
This determines which policy file, if any, is to be used by default when the program is first invoked.  The actual policy file used can, of course, be changed via the policy dialogue. 
The default policy file will also be used if the program is invoked via drag'n'drop.  This avoids the need for creating batch files with the policy file name on the command line. 
Always reload policy file during conversion 
This specifies that the current policy file should be reloaded every time the conversion is done.  If the file is large, and you are repeatedly converting using the same policy file, then this can slow you down.  On the other hand if you are editing the policy file by hand outside the program between conversions then you will want this option enabled. 
Tip of the day
The "Tip of the Day" screen is shown by default each time you start up the program.  This behaviour can be disabled by clearing the checkbox on the screen. 
The tip shown will change each time the screen is displayed, and in addition you can review all the tips available by using the buttons marked "<<" and ">>" to go to the previous and next tips.  The number of each tip is shown in case you should want to revisit it at a later date. 
The Tip of the Day screen can be shown at any time by selecting the option on the Settings menu. 
At present all tips are only available in English. 
Language menu
It is possible to change the user interface to the language of your choice. Translations are provided by a number of volunteers who help converting the menu, dialog, and ToolTips text.  The message and documentation text remains in English for the time being.  As such these don't offer a full translation, but will hopefully be of some use to those whose first language isn't English. 
At any given time you may still find English translations, especially in the messages displayed, and in the help and documentation files, but it is hoped that the efforts of these volunteers will make the program easier to use for non-English speakers. 
Supported languages 
At present work is under way on 
Spanish

	Gonzalo San Martin is undertaking the Spanish translation.
Gonzalo operates a highly popular Real Madrid fan page (in
Spanish and English) which you can visit at
http://members.bigfoot.com/~G.SanMartin/ 
Gonzalo can be contacted at G.SanMartin<at>bigfoot.com	
 	 	
Italian

	The Italian translation is being undertaken by
Gianluigi Pizzuto who can be contacted at gibly<at>libero.it and
has a web page at http://web.tiscalinet.it/fotone 	
 	 	
Swedish
	The Swedish translation is being undertaken by Dan Svarreby
who can be contacted at dan.svarreby<at>home.se.	
 	 	
French	The French translation is being undertaken by Andre Martinez.	
 	 	
Russian
	The Russian translation is being undertaken by
Alexander (aka J-34) at j34<at>mail.ru	
 	 	
Dutch

	The Dutch translation is being undertaken by Jurrien Dokter,
who can be contacted at info<at>axswebsolutions.nl and runs
the web site at http://www.axswebsolutions.nl/ 	
If you would like to volunteer to help with this effort, please email info<at>jafsoft.com (replace "<at>" by "@") or visit the web page at 
http://www.jafsoft.com/products/translations.html 

View menu
This menu contains the following options 
Messages from last conversion

	View the messages window with messages
generated in the last conversion by bringing
back the Status window 	
 	 	
Results of last conversion
	View the last file converted in your
preferred browser	
Results of last conversion
Once you've converted a file, you can view the results in the browser of your choice.  Detagger will detect the default browser used on your system.  If you wish you can change this through the settings menu 
You can view results in the selected browser by selecting the option on the view menu or by pressing the View results button on the main screen. 
Detagger can also be configured to automatically review results when run from the command line or in drag'n'drop operation. 
Help menu
The help menu has the following options:- 
Contents

	Brings up the contents page of this help file.  Help
can be brought up anywhere in the program by
pressing F1	
 	 	
Register (online)

	This options will take you to the registration page,
or - if you have already registered - to the updates
page	
 	 	
HTML doco (offline)
	Brings up the local copy of the HTML
documentation in your preferred browser	
 	 	
HTML doco (online)
	Brings up the Internet copy of the HTML
documentation in your preferred browser.	
 	 	
Other products
	Links to web pages for JafSoft and their various
software products.	
 	 	
About

	Shows the program version and other details.
Includes buttons to take you to the home page etc
on the web.	
Update menu
The update menu has the following option 
Check for newer versions

	This option will take you to the web site,
where a check will be made to tell you if this
is still the latest version of the software.	
Status window
The status window is displayed whenever a conversion is in progress.  It displays messages showing how the conversion is progressing.   You can also bring up this window by selecting the "messages from last conversion" option on the View menu.  You can prevent this behaviour by selecting the option from the Settings menu 
The messages displayed are usually just informational messages telling you what Detagger is doing.  You should review these messages and check they don't indicate an error in conversion. 
Once conversion is complete you can dismiss the window.  You can automate this by ticking the "dismiss on completion" box. 
Should you wish to you can use the save to file button to save the messages displayed to file.  This can be useful for reviewing messages, extracting URLs reported by the software (if showing URLs is enabled), or for sending details when requesting support. 

Console version
In addition to the Windows version of Detagger, there is a console version.  This can be invoked from the command line, and is thus well suited to use in batch and automated conversions. 
The console version is free to users who register the Windows version. A trial copy of the console version can be obtained by visiting 
http://www.jafsoft.com/developers/console_demos.html 
The console version is used from the command line.  Most of these command options are also supported by the Windows version, but the console version is better suited to batch operation. 
The console version is called h2acons.  You can see a list of the commands by using the command 
c:> h2acons /help
This gives 
Usage : h2acons filespec1 filespec2 [policy_file.pol] [/qualifiers] 
Recognised qualifiers include 

	/CONCAT
/CONSOLE
/DETAG
/HELP
/LOG=filename
/OUTPUT=filespec
/OVERWRITE
/POLICY=filename
/SILENT
/SUBFOLDERS
/TREE	Concatenate the results into one file
Write output direct to console
Selectively remove HTML markup
Display this useful list of commands ("/?" also works)
Generate a .log file
Filespec for output file(s)
May overwrite input files with the output
Document policies used in a .pol file
Suppress all output messages (except these :-)
Process files that match the filespec in sub-folders as well
Place output files in parallel folder structure to input files	
Qualifiers are case insensitive and may be reduced to shortest unique name (e.g. "/lo" for "/log") 
Most of the configuration options are passed using a "policy file".  This is most easily created by running the Windows version, selecting the options you want and then saving those to a policy file. 
The policy file itself is just a text file, with one policy per line (hard break).  If you look at the list of policies in the documentation you can edit this by hand, but usually it's just simpler to use the Windows version. 
The /CONCAT command line qualifier
When present this qualifier states that all the results should be output to a single file.  This only makes a difference if you've supplied multiple filespec's on the command line, or used a wildcard. 
The /CONSOLE command line qualifier
When present this specifies that the output should be written to the console window.  This might be useful in piping operations. 
If you use this, you will usually want to also use the /SILENT qualifier. 
The /DETAG command line qualifier
When present this specifies that Detagger should selectively remove HTML markup and create a HTML output file.  The default behaviour otherwise is to convert the file to text. 
If you want to specify which removal options should apply you'll need to create a policy file and add that to the command line. 
The /HELP command line qualifier
Displays the list of supported qualifiers 
The /LOG command line qualifier
When present this specifies that Detagger will create a .log file listing all the actions it takes and any messages created 
The /OUTPUT command line qualifier
When present this will tell Detagger where the output should be placed.  If omitted the default is to output the results in the same folder as the source file, with an extension (.txt or .html) appropriate to the type of conversion being attempted 
Examples :- 
c:> h2acons input.html /out="c:\my files\output.txt"
File is output to "c:\my files\output.txt".  Because there is a space in the directory path the filename needs to be in quotes 
c:> h2acons in*.html /out=c:\output\
All the files in*.html will be converted and placed in the directory "c:\output\" 
c:> h2acons in*.html /concat/detag/out=c:\output\bigfile.html
In this case the /concat/detag means that Detagger will selectively remove markup and concatenate the results in the single file "c:\output\bigfile.html" 
The /OVERWRITE command line qualifier
When the /DETAG qualifier is specified then by default the output file will be a HTML file in the same directory as the source file. In this case Detagger could end up replacing the original file by the output file.  That is only allowed if the /OVERWRITE qualifier is present.  If it isn't, an error message is generated. 
An alternative to using the /OVERWRITE qualifier is to use the /OUTPUT qualifier to direct the output to a different folder, or to a different name in the same folder. 
The /POLICY command line qualifier
When present Detagger will create a .pol policy file listing all the policies used in the conversion and their values.  You should not normally want to do this unless you want to create a policy file to edit. or want to check that your policies are being used. 
To pass in a set of policies, just list the policy file on the command line.  It must have a .pol extension.  For example the command 
c:> h2acons in*.html input.pol /policy=output.pol
will read the policies in "input.pol", use those in the conversion, and then create a file "output.pol" listing the policies used, which will be a mixture of default values and those loaded from "input.pol". 

The /SILENT command line qualifier
When present all the messages usually displayed to the console window are suppressed. 
You'd want to use this if you were using the /CONSOLE qualifier. 
The /SUBFOLDERS command line qualifier
When present the software will search the sub-folders of the input directory looking for other files that match the input filespec. 
See also The /TREE command line qualifier 
The /TREE command line qualifier
When present the software will place output files in a directory structure that matches the input structure.  This will only apply when using the /SUBFOLDERS and /OUTPUT options as well.  So for example the command 
    c:> h2acons c:\input\a*.html /output=d:\new\ /subfolders/tree
Would look for all files a*.html in the folder c\input\ and its sub-folders.  The output files will be placed in d:\new\ and sub-folders of that, so for example converting c:\input\sub\answer.html would be converted to d:\new\sub\answer.txt.  If it didn't already exist, the sub-folder d:\new\sub\ will be created. 
See also The /SUBFOLDERS command line qualifier 
Running from the 'SendTo' menu
Detagger can make a useful addition to your "Send to" menu (available when you right-click on a file in explorer). 
To add Detagger to this menu, simply add a shortcut to your Send To shortcuts directory.  Under Windows 9x this is 
/Windows/SendTo 
under Windows XP this is 
/Documents and Settings/<Your_User_Name>/SendTo 
If you want to use a standard policy file (e.g. with a particular colour scheme), then change the properties of the shortcut so that the command is 
Detagger %1 standard.pol 
Working with Unicode
Detagger was not originally designed with Unicode in mind, and as a result support for Unicode text has been gradually added over time, with the result that earlier versions of Detagger may not support all the features described in this manual.  If in doubt, please contact JafSoft for details. 

What is Unicode?
Traditional single-byte character sets interpret the 8-bit character values (128-255) as special characters.  So on a Russian machine this would be interpreted as Cyrillic, but on a different machine this could be read (wrongly) as Arabic (and vice versa).  On most English-based PCs, the 8-bit characters are used for accented character used in certain European languages, so a Russian text would appear to have lots accented 'i's, 'e's and 'a's. 
Unicode is a way of implementing text that supports multiple types of character sets at the same time so that - for example - it is possible to display Chinese and Cyrillic on the same page unambiguously.  It does this by allocating each character in each language a unique code value, so that codes used for Cyrillic characters no longer overlap and conflict with those assigned to Arabic. 
However, these code values are in most cases larger than can be represented in a single byte.  As a result a way has to be chosen to represent each character by one or more bytes. 
The following Unicode representations are commonly used 
UTF-8
Each character is represented by 1, 2 or 3 bytes, depending on the which range the Unicode code value falls into.  This has the advantage that all ASCII characters are a single byte, so for example all the HTML tags in a document are represented by a single byte each.  This also means there are no null bytes contained in the text, which can make programming software to work with this text easier. 
UTF-16
Each character is represented by a 2-byte pair (future characters may require 2 such pairs).  The 2-byte pair is just the numerical representation of the Unicode value of each character.  This makes the files easier to interpret, but also means that the byte order depends on how the machine stores its bytes - i.e. is the machine big-endian or little-endian.  Because ASCII characters have a Unicode value less than 255 the ASCII characters map onto a byte pairs in which one of the bytes is null.  Because each character requires two bytes, a single byte wrongly inserted into a UTF-16 stream will render all text that follows is as gibberish. 
Unicode Byte Order Marks (BOMs)
Files that contain Unicode identify themselves by inserting a "Byte Order Mark" (BOM) at the top of the file.  This is a two-byte marker for UTF-16 files and a three-byte marker for UTF-8 files.  Modern applications will test for this byte marker and if present will then know how to interpret the contents of the file.  For example Notepad as supplied with Windows XP can do this, whereas Notepad as supplied with Windows 98 could not. 
In UTF-16 each character is represented by two bytes, and computers can store a two-byte value in different ways (known as "big-endian" and "little-endian").  Each operating system uses one method or another and it isn't usually an issue, but when Unicode files get passed from one machine to another, this becomes important.  The BOM allows the two forms of UTF-16 (known as "UTF-16BE" and "UTF-16LE") to be distinguished. 
Auto-detecting Unicode input
The software has some ability to auto-detect Unicode text, and will generally do so under the following circumstances 
·	a 3-byte Byte Order Mark (BOM) is detected at the top of a UTF-8 input file 
·	a 2-byte Byte Order Mark (BOM) is detected at the top of a UTF-16 input file 
·	the input HTML contains an HTML entity that maps onto a Unicode code value which can't be converted into an ANSI or ASCII equivalent,  In this case although the input HTML may not have been encoded as Unicode, the output will need to be in order to correctly display the Unicode character.
Creating Unicode output
The software will create Unicode output whenever it detects that the input files were Unicode, or wherever Unicode characters have been detected in the HTML entities of the original. 
At present all Unicode output files will be UTF-8. 

Controlling Unicode handling through use of policies
The following policies can be used to control the handling of Unicode during the conversion :- 
input text encoding 
By default the software will attempt to auto-detect whether or not the input is Unicode, but if this fails you can explicitly tell the software the encoding using this policy. 
May add Unicode marker to output file 
When Unicode is detected in the source the software will output the text as UTF8 and optionally add a file marker that will label the file as "Unicode" in a way that most applications that can cope with Unicode will recognize. 
Allow ANSI alternatives (e.g. space for &nbsp;) 
Certain common HTML entities don't have a single ANSI character but have common ASCII representations.  If you enable this policy you tell the software to use ASCII/ANSI alternatives where possible, thereby reducing the chance of Unicode being necessary for the output file. 
Using policy files
Options available from the conversion options menu are also know as "policies".  All of JafSoft Limited conversion tools use the same policy file mechanism. 
Options can be saved to these policy files so that different sets of options can be saved and then easily reloaded during later conversions 
Policy files are just plain text files, with one policy per line. Each policy line takes the form 
<policy name> : <policy value> 
You can edit these files in a text editor, but must be careful to use the correct policy name. 
In Detagger almost all policies can be set through the conversion options menu. 
See also :- 
Markup removal policies 
·	Detag policies
·	Detag Tables policies
·	Tag manipulation policies
Text conversion policies 
·	Data Extraction policies 
·	Text Format policies
·	Page Layout options
·	Bullet options
·	Heading options 
·	Text Hyperlink policies
·	Text Marker policies
·	Text Paragraph policies
·	Text Table policies 
·	Miscellaneous formatting policies
·	Dialogue options
·	Other Options
·	Unicode Options
Miscellaneous policies 

What are Policy files?
Detagger has a large number of options available to influence the processing of your text files.  These options are called "policies" as they govern how the source file should be interpreted and converted. 
Policies may be saved in text files, known as policy files.  These files have a ".pol" extension by default.  The policy files are usually updated by changing the policies and saving the changes in a new file.  Because they are text files you can also edit them directly, in a text editor.  The files have the format of one policy per line of 
Text in the form 
PolicyText : <policy value> 
The use of policy files allow a given set of options to be saved and reused for other conversions, or later conversions of the same file. See Using policy files for more information. 

Alphabetical list of Detagger policies
Here is an alphabetic list of policy names.  Where possible a link is supplied to the equivalent option in the user interface. 
·	Add border to all tables
·	Add delimited table markers
·	Add URL references at end of file
·	Adjust table to page width
·	Allow 8-bit ANSI values in output
·	Allow ANSI alternatives (e.g. space for &nbsp;)
·	Allow blank row separator lines
·	Allow by-line to be used for Author field (not available in the GUI)
·	Allow headings inside tables
·	Apply extra dialogue checks
·	Attempt to parse tables
·	Break lines where dialogue starts in the middle
·	Bullet point characters
·	Concatenate results into one file
·	Convert only innermost tables
·	Convert tags to lower case
·	Convert tags to upper case
·	Default table indentation
·	Display link URLs
·	End list marker
·	End table marker
·	First line indent for paragraphs
·	Fragments file
·	Heading underline characters
·	Highlight bold and italic text
·	Ignore table WIDTH attributes New in version 2.4
·	Impose a page width on the output
·	Insert gap between sentences
·	Input text encoding
·	Keep deprecated tag attributes
·	Keep deprecated tags
·	Lines to ignore at end of file
·	Lines to ignore at start of file
·	List item templates New in version 2.4
·	Look for dialogue lines
·	Maximum table depth New in version 2.4
·	May add Unicode marker to output file
·	May break words to fit target width New in version 2.4
·	Minimum table depth New in version 2.4
·	Nested Table scaling factor (percent) New in version 2.4
·	Omit email hyperlinks from the output
·	Omit local hyperlinks from the output
·	Output each paragraph on a single line
·	Output indentation positions
·	Output table format
·	Preserve all white space from the original source
·	Preserve hyperlinks in text output
·	Preserve short lines
·	Remove <!DOCTYPE> tags
·	Remove all horizontal rules and lines
·	Remove all HTML tags
·	Remove all non-HTML tags
·	Remove all tags
·	Remove all x-tags used in mail messages
·	Remove emphasis tags
·	Remove HTML <DIV> tags New in version 2.4
·	Remove HTML <FONT> tags
·	Remove HTML <FORM>..</FORM> tags
·	Remove HTML <HEAD> section
·	Remove HTML <IMG> tags
·	Remove HTML <OBJECT> tags
·	Remove HTML <P> tags from tables
·	Remove HTML <SCRIPT> section
·	Remove HTML <SPAN> tags New in version 2.4
·	Remove HTML alignment attributes from tables
·	Remove HTML color attributes from tables
·	Remove HTML size attributes from tables
·	Remove HTML table tags
·	Remove HTML-style comments
·	Remove Microsoft Office tags
·	Remove non-standard tag attributes
·	Remove non-standard tags
·	Remove style sheet
·	Replace <IMG> tags by a text marker
·	Replace entities by text
·	Replace hyperlinks by the display value
·	Right justify the output text
·	Show only table data New in version 2.4
·	Start list marker
·	Start table marker
·	Suppress borders on nested tables
·	Target page width
·	Target table width
·	Text bullet characters
·	Text commands file
·	Text to replace omitted links by
·	Treat short lines as paragraph endings
·	Use the ALT attribute to replace <IMG> tags
Markup removal policies
These policies allow you to control the tag removal process.  You can choose what tags are to be removed, or what manipulations you'd like performed on each tag. 
Detag policies 
Detag tables policies 
tag manipulation policies 

Detag policies
These policies allow you to choose which tags are to be removed from the markup. 
Remove all tags 
·	Remove all HTML tags 
·	Remove <!DOCTYPE> tags
·	remove <HEAD>...</HEAD> section
·	remove all comments
·	remove all <SCRIPT> sections
·	remove all <OBJECT>..</OBJECT> sections
·	remove all <DIV> tags
·	remove all <FORM>..</FORM> tags
·	remove all <FONT> tags
·	remove all <SPAN> tags
·	Remove emphasis tags
·	remove all hyperlinks
·	Remove style sheet
·	remove all <IMG> tags
·	Remove non-standard tags
·	leave in "deprecated" tags
·	Remove non-standard tag attributes
·	leave in "deprecated" attributes 
·	Remove all non-HTML tags 
·	remove tags and attributes added by email systems
·	remove tags and attributes added by MS Office
Remove All Tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected, all tags will be removed from the markup.  This effectively turns the conversion into a html-to-text conversions 
Remove All HTML Tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected, all HTML tags will be removed from the markup.  This will leave only the non-HTML tags. 
Remove <!DOCTYPE> tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected any <!DOCTYPE> tag in the document will be removed.  This might be a useful precursor to remove a no longer valid DOCTYPE e.g. if you were concatenating the results or migrating the files to XML of some description. 
Remove HTML <HEAD> section
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected any <HEAD>...</HEAD> section in the document is removed.  This might be a useful precursor to merging two HTML files together, although the <HTML> and <BODY> tags will be left in the output. 
Remove HTML-style comments
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all <!-- ... --> style comments are removed. 
Remove HTML <SCRIPT> section
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all <SCRIPT>..</SCRIPT> sections are removed, effectively removing all scripted content from the file. 
Remove HTML <OBJECT> tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all <OBJECT>..</OBJECT> sections are removed, effectively removing embedded active content from the file. 
Remove HTML <DIV> tags
New in version 2.4 
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all <DIV..> and </DIV> tags are removed. 

Remove HTML <SPAN> tags
New in version 2.4 
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all <SPAN..> and </SPAN> tags are removed. 
Remove HTML <FORM>..</FORM> tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all tags associated with forms will be removed.  This includes the <FORM>, <INPUT>, <SELECT>, <OPTION>, <TEXTAREA>, <FIELDSET>, <LEGEND> and <LABEL> tags. 
Any visible markup (such as tables) integrated with the <FORM> is left intact.  This may not always be desirable, and this issue may be addressed in later releases. 
Remove HTML <FONT> tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all <FONT..> and </FONT> tags are removed. <FONT> tags are deprecated in later versions of HTML in favour of CSS style sheets.  <FONT> tags can also make a file much larger than it need be, so removing them can be desirable for a number of reasons. 
Remove emphasis tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected, all emphasis markup such as <B>, <I>, <STRONG> and <EM> tags are removed. 
Replace hyperlinks by the display value
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all hyperlinks are removed.  The hyperlink is replaced by it's visible content, only the "link" part is removed. 
Remove style sheet
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all <STYLE>..</STYLE> sections are removed and all references to external style sheets are removed 
Remove HTML <IMG> tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all Images defined as <IMG> tags are removed. 
Remove non-standard tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all tags not recognised as being part of HTML are removed.  The standard used is currently HTML 4.0 Transitional. 
See also Keep deprecated tags 
Keep deprecated tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When the option Remove non-standard tags is selected, this option determines that any "deprecated" tags may be left in.  These are tags recognised in earlier versions of HTML, but which are no longer strictly supported. 
Usually these tags are still supported in browsers, and sometimes removing these tags will adversely affect your page's appearance, as newer forms of tagging are often required to achieve the same effect. 
Remove non-standard tag attributes
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When this option is selected all tag attributes not recognised as being part of HTML are removed.  The standard used is currently HTML 4.0 Transitional. 
Note, in HTML 4.0 many tag attributes were deprecated, so that HTML code that relied heavily on tag attributes (e.g.. to set paragraph alignment) may need to be heavily re-written to achieve the same effect under the later standard. 
See also Keep deprecated tag attributes 
Keep deprecated tag attributes
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When the option Remove non-standard tag attributes is selected, this option determines that any "deprecated" tag attributes may be left in.  These are attributes that were recognised in earlier versions of HTML, but which are no longer strictly supported. 
Usually these attributes are still supported in browsers, and sometimes removing these tags will adversely affect your page's appearance, as newer forms of tagging are often required to achieve the same effect. 
Remove all non-HTML tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When selected all tags not recognised as HTML will be removed from the file. 
Depending on the source of the HTML these could be XML tags, or proprietary tags added by the software used to create the HTML. 
Remove all x-tags used in mail messages
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When selected tags believed to be added by an email package will be removed. For example Eudora adds tags in the form <x-whatever> to markup key aspects of a HTML message.  this option should remove such tags. 
Remove Microsoft Office tags
Menu location: Configuration Options -> Markup Manipulation ->Detagger options 
When selected tags believed to have been added by MS Office applications are removed.  Some versions of MS Office add a lot of tagging - particularly to HTML exported from Excel - to describe a document's ownership and structure. 
This option will attempt to remove (and to a limited extent tidy up) such markup. 

Detag tables policies
These options allow a few limited tag manipulations to be performed on any <TABLE>s in the HTML during the markup removal. 
·	Remove all table tags
Paragraphs
·	Replace <p>..</p> tags by <br> tags
Attributes
·	Remove all alignment attributes
·	Remove all colour attributes
·	Remove all size attributes
Remove HTML table tags
Menu location: Configuration Options -> Markup Manipulation ->Tables 
When this option is selected all "table" tags are removed (i.e. <table>, <tr>,<th>,<td>,<thead>,<tbody> and <tfoot>).  This effectively removes all the table structure in a document, which can be useful if you want to view the HTML on a device with a small display less suited to tables. 
Remove HTML <P> tags from tables
Menu location: Configuration Options -> Markup Manipulation ->Tables 
When selected this option will replace <p>..</p> tags by a suitable pattern of <br> tags.  <br> tags will be inserted between each paragraph in each cell.  If a cell has only one paragraph, nothing is inserted. 
This option can be useful when tidying up HTML created by certain Word processing packages which needlessly insert <p>..</p> markup. 
Remove HTML alignment attributes from tables
Menu location: Configuration Options -> Markup Manipulation ->Tables 
When selected all alignment attributes ("align" and "valign") are discarded from the various TABLE, TBODY, THEAD, TFOOT, TR, TH and TD tags 
Remove HTML color attributes from tables
Menu location: Configuration Options -> Markup Manipulation ->Tables 
When selected all colour attributes ("bgcolor") are discarded from the various TABLE, TBODY, THEAD, TFOOT, TR, TH and TD tags 
Remove HTML size attributes from tables
Menu location: Configuration Options -> Markup Manipulation ->Tables 
When selected all sizing attributes ("cellpadding", "cellspacing", "height" and "width") are discarded from the various TABLE, TBODY, THEAD, TFOOT, TR, TH and TD tags. 
Note logical size attributes such as "colspan" and "rowspan" are left intact, as is "border". 

Tag manipulation policies
These options allow a few limited tag manipulations to be performed during the markup removal. 
tag conversions 
·	Convert tags to lower case
·	Convert tags to UPPER case
character replacements 
·	Replace character entities by ANSI text 
·	Allow ANSI alternatives (e.g. space for &nbsp;)
·	Use 7-bit ASCII alternatives where possible
Convert tags to lower case
Menu location: Configuration Options -> Markup Manipulation -> Tag manipulation 
When selected all tags and attributes will be converted to lower case. Any attribute values will be left unchanged. 
Convert tags to UPPER case
Menu location: Configuration Options -> Markup Manipulation -> Tag manipulation 
When selected all tags and attributes will be converted to UPPER CASE. Any attribute values will be left unchanged. 
Replace entities by text
Menu location: Configuration Options -> Markup Manipulation -> Tag manipulation 
When selected any attribute values such as &copy; or &#163; will be converted to their ANSI equivalents. 
Note, not all such entities have an ANSI equivalent, and those that don't will be left unchanged. 
The ANSI character set is an "8-bit" character sets, that is each character is represented by a value in the range 0-255.  Of these the first 128 characters are known as the "7-bit" characters.  Whilst almost all character sets support 7-bit characters, not all support the "upper" 8-bit characters, so you may not want to allow 8-bit characters.  For that reason there are two more options 
See also Allow ANSI alternatives (e.g. space for &nbsp;) and Allow 8-bit ANSI values in output 
Allow ANSI alternatives (e.g. space for &nbsp;)
Menu location: Configuration Options -> Markup Manipulation -> Tag manipulation 
When selected, any entity that maps onto an upper 8-bit character will be allowed (e.g. &copy; will be replaced by the copyright symbol) 
Allow 8-bit ANSI values in output
Menu location: Configuration Options -> Markup Manipulation -> Tag manipulation 
The GUI shows this option as "Use 7-bit ASCII alternatives where possible" (which, in fact, has the exact opposite meaning).  When that is set, this policy is disabled (and vice versa). 
When this policy is enabled (i.e. 'Use 7-bit...' is unchecked), then any 8-bit characters are allowed to pass unchanged.  The display of such characters will depend on the language and Operating System of the computer used to view the results file. 
When this policy is  disabled (i.e. 'Use 7-bit...' is checked), then any entity that can be approximated by using one or more 7-bit characters will be replaced by that approximation.  For example &nbsp; will become a single space, while &mdash; will become two hyphens "--". 

Text conversion policies
The following screens allow access to options to control various aspects of the text conversion process. 
·	Data Extraction policies
·	Text Format policies
·	Text Hyperlink policies
·	Text Marker policies
·	Text Paragraph policies
·	Text Table policies
·	Miscellaneous formatting policies
Data Extraction policies
New in version 2.4 
These policies help you refine the use of Detagger as a data extraction tool. Note, Detagger wasn't designed as a data mining tool, but with these options you can choose to focus only on data in tables at a certain level, and to then turn the selected data into a delimited format that will make it easier post-process the results file (e.g. to import it into a spreadsheet or database). 
Table extraction policies 
These options can be used to tell the program to only extract data from tables, or that only certain level(s) of nested table should be extracted from the soured document. 
·	Show only table data
·	Maximum table depth to extract data from in nested tables
·	Minimum table depth to extract data from in nested tables
Table data handling 
These options specify how the data inside tables should be handled. Only one option may be selected.  If comma- or tab-delimited data is selected, then the text will be output between table delimiters. 
In the Policy File the policy Output table format takes the value 1,2 or 3 according to which of the following is selected.  In the user interface you need only select the desired option. 
·	Convert table to plain text
·	Convert table to comma-delimited data
·	Convert table to tab-delimited data
If you choose to convert the table into a delimited data format, the following two options become available :- 
·	Only convert the innermost TABLE tag
·	Add markers around the delimited text
Show only table data
New in version 2.4 
Menu location: Configuration Options -> Conversion to text -> Data extraction 
When enabled, only that part of the input file contained in HTML <TABLE> markup will be included in the output.  How that data is formatted will depend on the other text table policies, and the remaining data extraction policies that have been chosen. 
To further refine which table data is extracted, use the Minimum table depth and Maximum table depth policies. 
Minimum table depth
New in version 2.4 
Menu location: Configuration Options -> Conversion to text -> Data extraction 
This policy, together with Maximum table depth specifies a range of table depths from which data should be extracted. 
Many HTML use tables to lay out a page as well as to mark up tabular data.  These nested table structures can be quite complex and can get in the way of accessing the inner data.  Similarly Menus and the like are often implemented by "mini" tables inside tables, inside tables etc. 
With these policies you can elect to ignore all data placed in tables at a level higher or lower than that of interest 
Consider the HTML code 
        <TABLE WIDTH="100%">
          <TR>
             <TD WIDTH="30%">
                <!--- left hand menu -->
                <a href="http://www.jafsoft.com/products.html">This is menu item 1</a><br>
                <a href="http://www.jafsoft.com/detagger/">This is menu item 2</a><br>
             </TD>
             <TD WIDTH="70%">

                <!-- main part of the page -->
                <TABLE>
                 <TR>
                   <TH>Date</TH>
                   <TH>Total</TH>
                 </TR>
                 <TR>
                   <TD>April 13</TD>
                   <TD>1,001</TD>
                 </TR>
                 <TR>
                   <TD>May 21</TD>
                   <TD>908</TD>
                 </TR>
               </TABLE>
             </TD>
           </TR>
        </TABLE>
        <TABLE WIDTH="100%">
           <TR>
             <TD COLSPAN="2">
               <TABLE WIDTH="100%">
                 <TR>
                   <TD>
                      <TABLE WIDTH="100%">
                        <TR>
                          <TD><a href="http://www.jafsoft.com/asctohtm/">Text to HTML</a></TD>
                          <TD><a href="http://www.jafsoft.com/asctotab/">Text to table</a></TD>
                          <TD><a href="http://www.jafsoft.com/asctortf/">Text to RTF</a></TD>
                          <TD><a href="http://www.jafsoft.com/asctopdf/">Text to PDF</a></TD>
                          <TD><a href="http://www.jafsoft.com/detagger/">HTML to text</a></TD>
                        </TR>
                      </TABLE>
                    </TD>
                 </TR>
               </TABLE>
             </TD>
           </TR>
         </TABLE>
When converted to text this becomes 
        +-------------------+----------------+
        |This is menu item 1|+--------+-----+|
        |This is menu item 2||Date    |Total||
        |                   |+--------+-----+|
        |                   ||April 13|1,001||
        |                   |+--------+-----+|
        |                   ||May 21  |908  ||
        |                   |+--------+-----+|
        +-------------------+----------------+
        +---------------------------------------------------------------------+
        |+-----------------------------------------------------------------+  |
        ||+------------+-------------+-----------+-----------+------------+|  |
        |||Text to HTML|Text to table|Text to RTF|Text to PDF|HTML to text||  |
        ||+------------+-------------+-----------+-----------+------------+|  |
        |+-----------------------------------------------------------------+  |
        +---------------------------------------------------------------------+
That is, the page consists of a table of data containing dates and totals, but in addition this is placed in an outer table with a menu on the left.  At the foot of the page is a navigation menu, implemented as a heavily nested table. 
NOTE: The hyperlinks have been removed using the text hyperlink policies. 
To get rid of the outer table set the Minimum table depth to 2.  Doing this gives the following 
        +--------+-----+
        |Date    |Total|
        +--------+-----+
        |April 13|1,001|
        +--------+-----+
        |May 21  |908  |
        +--------+-----+
        +-----------------------------------------------------------------+
        |+------------+-------------+-----------+-----------+------------+|
        ||Text to HTML|Text to table|Text to RTF|Text to PDF|HTML to text||
        |+------------+-------------+-----------+-----------+------------+|
        +-----------------------------------------------------------------+
Note that the text in the outer table (in this case the menu text) has been discarded, but we still have a doubly nested footer table.  If we also set the Maximum table depth to 2, we get 
        +--------+-----+
        |Date    |Total|
        +--------+-----+
        |April 13|1,001|
        +--------+-----+
        |May 21  |908  |
        +--------+-----+
        ++
        ||
        ++
That is, the footer becomes an empty table (when borders are displayed).  Using the table data handling options you can now convert this to, for example, CSV format. 
        "Date","Total"
        "April 13","1,001"
        "May 21","908"
Note, we've switched off borders and removed delimited table markers in this output. 
Note, the Minimum table depth and maximum table depth are fairly broad brush policies - if there had been multiple tables with nested content at level 2, then it would all be included in the output.  That said, these policies do offer some prospect of focusing the output on the data you want. 

Maximum table depth
New in version 2.4 
Menu location: Configuration Options -> Conversion to text -> Data extraction 
See the discussion in Minimum table depth 

Output table format
Menu location: Configuration Options -> Conversion to text -> Data extraction 
In the Policy File this policy takes the value 1,2 or 3 according to which of the following is selected. 
·	Convert table to plain text
·	Convert table to comma-delimited data
·	Convert table to tab-delimited data
Any tables processed during the conversion will then be formatted according to the selection made. 
Convert table to plain text
Menu location: Configuration Options -> Conversion to text -> Data extraction 
When selected any tables will be converted into plain text.  The software will look at the row and column structure of the HTML original, and attempt to lay this out in the current page width, although this may not always be possible. 
See also Output table format 
Convert table to comma-delimited data
Menu location: Configuration Options -> Conversion to text -> Data extraction 
When selected any tables will be converted into comma-delimited data. Each row is put out as a row of comma-delimited data, with the data values themselves in quotes.  The resulting data is in a format suitable for importing into spreadsheets. 
Where tables are nested, by default only the innermost table will be converted in this way.  Because these could be multiple tables in a file, each table is delimited as follows 
        $_$_BEGIN_COMMA_DELIMITED_TABLE
        ...
        comma-delimited data rows
        ...
        $_$_END_TABLE
You can change this behaviour through the options:- 
·	Convert only innermost tables
·	Add delimited table markers
See also Output table format 
Convert table to tab-delimited data
Menu location: Configuration Options -> Conversion to text -> Data extraction 
When selected any tables will be converted into tab-delimited data. Each row is put out as a row of tab-delimited data, with the data values themselves in quotes.  The resulting data is in a format suitable for importing into spreadsheets. 
Where tables are nested, by default only the innermost table will be converted in this way.  Because these could be multiple tables in a file, each table is delimited as follows 
        $_$_BEGIN_DELIMITED_TABLE
        ...
        tab-delimited data rows
        ...
        $_$_END_TABLE
You can change this behaviour through the options:- 
·	Convert only innermost tables
·	Add delimited table markers
See also Output table format 
Convert only innermost tables
Menu location: Configuration Options -> Conversion to text -> Data extraction 
For nested tables conversion to a delimited format can become a bit of a nightmare.  Usually it will be the innermost table which is data, with outer tables being used for page layout, and so by default the software will only convert the innermost table of a nested set into delimited format. 
However this may not always be the case, and so this option can be switched on to convert all levels of table into delimited format.  In such cases you may have to tidy up the text (to delete and unwanted portions) before importing it into a spreadsheet. 
Note, from version 2.4 onwards, the policies maximum table depth and minimum table depth offer a bit more control than this policy. 
Add delimited table markers
Menu location: Configuration Options -> Conversion to text -> Data extraction 
By default markers are put round the delimited data to separate it from normal text, and from other sections of delimited data.  This makes sense for a file which contains non-table elements, or multiple tables, but probably isn't for files that contain just a single table. 
When enabled each table (or sub-table) will appear like this 
        $_$_BEGIN_DELIMITED_TABLE
        ...
        delimited data rows
        ...
        $_$_END_TABLE
You can use this option to control this behaviour. 

Text Format policies
Detagger has a number of options to allow you to tailor the conversion to text.  Some control what is copied across to the output, but most offer options to format the output above and beyond the formatting implicit in the original HTML. 
·	Preserve layout as it is in the source 
·	Page Layout options
·	Bullet options
·	Heading options
Page Layout options
These options control how the text is laid out on the page. 
·	Apply line formatting to output text
·	Target page width
·	Right justify the output text
·	Comma-separated list of output indentation positions
Preserve all white space from the original source
Menu location: Configuration Options -> Conversion to text -> Formatting 
When this option is selected the text is laid out as it was in the original HTML file, minus the actual tags.  If this option is selected then all other text formatting options are ignored. 
This option is suitable when the input file is only lightly tagged (e.g. a document with large <PRE> sections). 
Impose a page width on the output
Menu location: Configuration Options -> Conversion to text -> Formatting 
When selected this means that the lines of the text file should be formatted to match a target page width.  This will involve moving text around within a paragraph if necessary 
Target page width
Menu location: Configuration Options -> Conversion to text -> Formatting 
When line formatting is switched on, this is the target page width.  If omitted there will in any case be a default page width applied (set to 76 characters). 
See also target table width 
Right justify the output text
Menu location: Configuration Options -> Conversion to text -> Formatting 
When selected white space will be added to each line inside a paragraph so that the right margins are aligned as well as the left. 
Output indentation positions
Menu location: Configuration Options -> Conversion to text -> Formatting 
The is a comma-separated list of up to 8 levels of indentation, specifying how the output text should be indented when laying out indented text such as nested lists. 
By conversion the first value should be a zero to set the left hand margin to start at the beginning of the line. 

Bullet options
These options control the presentation of bullets and list in the output text document 
·	Bullet point characters
·	Text bullet characters
·	Comma-separated list of list item templates
Bullet point characters
Menu location: Configuration Options -> Conversion to text -> Formatting 
When converting to text, this identifies characters which - if they end up at the start of a line by themselves - can be taken to be bullet points.  The hyphen character '-' is implicitly regarded as a bullet point, but characters such as 'o', 'q' and '§' can sometimes appear in the output text as bullet points depending on how the original HTML was generated. 
When a bullet point is found to match one of these characters, the first of the text bullet characters is used as a replacement. 
Text bullet characters
Menu location: Configuration Options -> Conversion to text -> Formatting 
When converting to text, this is a comma-separated list that specifies which characters are to be used as the bullet at each level of list. The special value "middot" will be taken to mean the "middot" character. 
At the same time, any "middot" characters occurring in the text will be replaced by the first "bullet" on this list. 
For example the value 
(+),+,- 
Would convert any level 1 list bullets to "(+)", level 2 to "+" and level 3 to "-".  At the same time any middot characters '·' will be converted into "(+)" (the first bullet on the list). 
The default value is 
middot,middot,middot,middot,middot,middot 
List item templates
New in version 2.4 
Menu location: Configuration Options -> Conversion to text -> Formatting 
This policy is a comma-separated list of "templates" to be used when outputting ordered lists.  The policy allows you to specify the format of each list item for up to 6 levels of list.  The format should include an "x", which will be replaced by the item number. 
For example a value of 
(x), x), x: 
would lead to a list structure as follows 
        (1) item at list level 1
            a) item at list level 2
                i: item at list level 3
The default value is 
x),x),x),x),x),x) 
Heading options
These options control how headings in the original document are presented 
·	Heading underline characters
Heading underline characters
Menu location: Configuration Options -> Conversion to text -> Formatting 
This is a comma-separated list controlling the underlining character (or character pattern) at each heading level.  A value of ",,,,," (or indeed blank) would suppress all heading underlining. 
As an example the value 
=+ , - 
would cause <H1> headings to be underlined with the pattern
"=+=+=+=", <H2> to be underlined with "-------" and all other
heading levels no to be underlined at all.

Miscellaneous Formatting policies
Detagger has a number of options to allow you to tailor the conversion to text.  Some control what is copied across to the output, but most offer options to format the output above and beyond the formatting implicit in the original HTML. 
·	Preserve all white space from the original source 
·	Dialogue options
·	Other options
·	Unicode options
Dialogue options
For those HTML files that represent works of fiction, Detagger has some sophisticated "dialogue" detection and formatting options.  Dialogue is deemed to be any words or phrases in double quotation marks. Where they occur at the start of a line this can often (but not always) signify the next line of dialogue (i.e. a new "character" speaking) 
Care is taken - as far is possible - to distinguish text that happens to be in "quotes" and true dialogue.  However this will never be a 100% accurate process. 
·	Apply special formatting to dialogue lines
·	Apply extra tests for improved accuracy
·	Attempt to start all dialogue on a new line
Look for dialogue lines
Menu location: Configuration Options -> Conversion to text -> Miscellaneous Formatting 
When this option is switched on, the program will attempt to spot dialogue at the start of a line and format it accordingly, with each new speaker starting a new paragraph in the output. 
Apply extra dialogue checks
Menu location: Configuration Options -> Conversion to text -> Miscellaneous Formatting 
When this option is enabled, extra tests are made to check the validity of lines believed to be the start or end of a dialogue phrase.  Tests include looking for suitable use of capitalisation and punctuation inside and outside the quoted text. 
Some of these tests are biased towards the text being in English. 
Break lines where dialogue starts in the middle
Menu location: Configuration Options -> Conversion to text -> Miscellaneous Formatting 
When this option is enabled, the software will attempt to spot new dialogue from a different character that appears deep inside a paragraph.  When this is detected, the larger paragraph will be broken so that the dialogue of the new character starts in a new paragraph 

Other Options
·	Remove all horizontal rules and lines
·	Add bold (*) and italics (_) emphasis characters
·	May add Unicode marker to output file
Remove all horizontal rules and lines
Menu location: Configuration Options -> Conversion to text -> Miscellaneous Formatting 
When selected all horizontal lines and rules in the input will be omitted in the output. 
Highlight bold and italic text
Menu location: Configuration Options -> Conversion to text -> Miscellaneous Formatting 
When selected, HTML marked as <b>bold</b> or <i>italic</i> can be emphasised in the output text as bold and italic. 
This can work well when the occasional word is emphasised, but in some HTML pages entire menus are placed in bold, and in such files this options is probably best switched off. 

Unicode Options
Detagger has a limited ability to deal with Unicode in the HTML files. 
At present the following options are available 
·	May add Unicode marker to output file
·	Input text encoding
May add Unicode marker to output file
Menu location: Configuration Options -> Conversion to text -> Miscellaneous Formatting 
When selected files which are detected to contain Unicode characters will get a "Unicode file marker" output at the start of the file. 
A Unicode file marker at the top of a file is recognised by some software applications (e.g. text editors) as marking the file as containing Unicode.  The marker characters themselves don't get displayed. 
Where possible, the software will create a UTF8 file.  Full Unicode support has not been tested, and it is not expected that Detagger will support all types of Unicode 
Input text encoding
Menu location: (none at present) 
The program has the ability to detect Unicode Files on input if Byte Order Mark (BOM) is present, or if - under some circumstances - Unicode HTML entities are present in the input text, but in files without the BOMs the software may fail to detect the input is Unicode. 
In such circumstances this policy allows you to tell the software that the input should be treated as Unicode.  The possible values for this policy are 
auto
UTF8
UTF16-BE
UTF16-LE	automatic detection (the default)
UTF-8
UTF-16 "Big Endian"
UTF-16 "Little Endian"	
For a fuller discussion see Working with Unicode 

Text Hyperlink policies
These options control what happens to any hyperlinks in the original document.  Since text files don't support hyperlinks, the options are to ignore the link entirely, only use the display text, or to turn the link into a reference and add a reference table at the end, listing the URLs the links pointed to. 
Hyperlink removal 
·	Preserve hyperlinks in text output
·	Remove email hyperlinks
·	Remove hyperlinks to local resources
·	Text to replace removed links by
Display of URLs 
·	Add URL reference table
·	Display link URLs
Images 
·	Replace <IMG> tags by a text marker
·	Use the ALT attribute as the marker
Preserve hyperlinks in text output
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
This is a peculiar one added in response to a customer request. When enabled during a conversion to text, all hyperlinks are left intact, so what you end up with is a text file with HTML hyperlinks in it.  This may be of interest to those wishing to import text into a database for display on HTML pages. 
It is expected that in the conversion any HTML entities (specifically &amp;) in the URL will get converted to their ASCII equivalent.  This may cause usability problems with the link after conversion. 
Omit email hyperlinks from the output
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
When this option is selected, all visible email addresses are omitted from the output.  This can be a useful privacy option. 
Omit local hyperlinks from the output
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
When this option is selected, any link to a local resource (a jump point, or a non http-qualified URL) is omitted from the output.  This can be used to remove local navigation links from documents where "next", "previous", "top of page" links will mean nothing in the final text. 
If this option isn't selected, the display part of such links will be copied to the output text. 
Text to replace omitted links by
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
If either of the two previous options is selected, then this is the text that any deleted links will be replaced by.  If set to blank the links are completely removed. 
Add URL references at end of file
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
If this option is selected then hyperlinks to resources are replaced by the display text, and a reference number [n] added after it.  A full reference table, listing the original URL that matches the reference numbers is then added at the end of the file. 
When selected the option Display link URLs is disabled. 
Display link URLs
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
When selected the URL for hyperlinks is displayed in brackets in the main text, after the display text. 
When selected the option Add URL references at end of file is disabled. 
Replace <IMG> tags by a text marker
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
When selected any <IMG> tags in the original are replaced by an "[Image]" marker. 
See also Use the ALT attribute to replace <IMG> tags 
Use the ALT attribute to replace <IMG> tags
Menu location: Configuration Options -> Conversion to text -> Hyperlinks 
When selected any ALT attribute on a <IMG> tag will be used as the replacement text marker for the tag. 
See also Replace <IMG> tags by a text marker 

Text Marker policies
New in V2.3 
These policies allow you to specify special "markers" that should be added to the output to delimit tables and lists.  This can be useful if you want to pass the output to some further software package for post-processing. 
Tables 
·	Start table marker
·	End table marker
Lists 
·	Start list marker
·	End list marker
End list marker
Menu location: Configuration Options -> Conversion to text -> Markers 
See start list marker 

End table marker
Menu location: Configuration Options -> Conversion to text -> Markers 
See start table marker 
Start list marker
Menu location: Configuration Options -> Conversion to text -> Markers 
When converting to text, this option identifies a marker that will be output on the line before the start of any marked-up list that is detected.  This can be useful if you want to subsequently identify lists in the text. 
See also End list marker 
Start table marker
Menu location: Configuration Options -> Conversion to text -> Markers 
When converting to text, this option identifies a marker that will be output on the line before the start of any marked-up table that is detected.  This can be useful if you want to subsequently identify tables in the text. 
See also End table marker 

Text paragraph policies
New in V2.3
These options control the layout of text into sentences and paragraphs. <P> tags in the original text are preserved, but some HTML files use means other than that to layout text (e.g. multiple <BR> tags).  In such cases Detagger applies extra intelligence to detect the paragraph structure. 
·	Output each paragraph on a single line
·	Preserve short lines
·	Treat short lines as paragraph endings
·	Apply 2-character gap between sentences
·	Paragraph indentation
Output each paragraph on a single line
Menu location: Configuration Options -> Conversion to text -> Paragraphs and sentences 
When selected this option specifies that each paragraph is put out as a single line (i.e. with a single hard break).  This produces text that will display well in those environments that automatically wrap text. 
This options won't work on text inside a table unless you switch off Attempt to parse tables 
Preserve short lines
Menu location: Configuration Options -> Conversion to text -> Paragraphs and sentences 
When selected any line deemed to be "short" will keep it's line break, even if text is rearranged to fit into a target page width. 
First line indent for paragraphs
Menu location: Configuration Options -> Conversion to text -> Paragraphs and sentences 
Specifies the number of characters by which the first line in a new paragraph should be indented relative to those that follow. 
Treat short lines as paragraph endings
Menu location: Configuration Options -> Conversion to text -> Paragraphs and sentences 
Specifies that in files where there are no paragraph markers, a short line amongst longer lines should be taken as signalling a paragraph end.  This can be useful when converting files that use multiple <BR> tags, but where you want a different page width in the output.  Without this test there would be no paragraphs detected. 
Insert gap between sentences
Menu location: Configuration Options -> Conversion to text -> Paragraphs and sentences 
When selected the software will impose a 2-character space between sentences, regardless of what spacing was in the original.  This is a common style in written text. 

Text Table policies
These policies control how (if at all) Detagger will attempt to faithfully represent tables in the output. 
The software does a reasonable job of representing simple tables as text, and can even cope with nested tables to a limited extent. 
·	Attempt to parse tables 
·	Table border options
·	Table width options
·	Miscellaneous Table options
Attempt to parse tables
Menu location: Configuration Options -> Conversion to text -> Tables 
When selected Detagger will attempt to correctly format any HTML tables in the text. 
In doing so Detagger will attempt to preserve the width, alignment etc of the original, but this process can only ever be approximate due to the quite different formats of HTML and text.  Bear in mind that if the software is adding emphasis characters (see Highlight bold and italic text) or URL references (see text hyperlink policies), then this will end up with more output text to fit in the table. 
Although you can try to adjust table to page width, if the table is too wide or the page too narrow, then this will often fail - particularly for heavily nested tables. 

Table border options
These options specify whether any tables should have borders added in the text file.  This only applies when converting to plain text (see Output table format).  By default the software will replicate the border status of the outermost tables, but suppress borders in any inner, nested tables.  This is because the space taken by borders in the ASCII file limits the room for data. 
·	Add border to all tables
·	Suppress borders on nested tables
·	Allow blank lines between rows
Add border to all tables
Menu location: Configuration Options -> Conversion to text -> Tables 
When selected a border will be added round each table created.  This will be regardless of whether the original table set a border or not. 
If omitted, then the border attribute of the original HTML should be honoured. 
Suppress borders on nested tables
Menu location: Configuration Options -> Conversion to text -> Tables 
When table borders are present (or switched on), this option suppresses any borders on tables that appear inside other tables.  This is done because nesting tables is usually done to achieve layout, and in the text file white space usually looks better (less distracting). 
This options will not prevent a border being added to the outermost table (if one is requested). 
Allow blank row separator lines
Menu location: Configuration Options -> Conversion to text -> Tables 
This specifies whether or not blank lines are allowed in the output between rows.  In this case a blank line is output between each table row (when there is no border).  This can space out the table making it easier to read, especially if some of the cell contents are split over several lines. 
This option only works when the table is being converted to plain text as opposed to a data delimited format. 

Table width options
Controls the width the table will take on the output "page".  The default behaviour is to regard 800 pixels as 80 characters wide. 
·	Fit table to page size
·	Target table width
·	Ignore table WIDTH Attributes
·	May break words to fit target width
·	Nested Table scaling factor (percent)
Adjust table to page width
Menu location: Configuration Options -> Conversion to text -> Tables 
When selected this specifies that any table should attempt to fit the current target table width. 
For a reasonable page size and simple table, Detagger can usually re-arrange the table's contents cell-by-cell to fit the table to the page. 
However for narrow pages and/or large tables or heavily nested tables it becomes virtually impossible to achieve this goal. 
Target table width
Menu location: Configuration Options -> Conversion to text -> Tables 
When table formatting is being attempted, this is the target page width for tables.  This is the maximum width that a table should be allowed to grow to.  In some nested tables however this limit may on occasion be exceeded. 
If omitted the value will default to the target page width value, which in turn will default to 76 characters. 
Ignore table WIDTH attributes
New in version 2.4 
Menu location: Configuration Options -> Conversion to text -> Tables 
Whenever Detagger converts a tables with explicit WIDTH attributes, it tries to honour this layout.  However, sometimes the widths set in an HTML table don't give enough room to lay out the text when converting to text. 
This can happen for a number of reasons 
·	the widths have been wrongly chosen to be too small in the HTML, but the browser has widened the table (thereby effectively ignoring the set width) 
·	text in the table has been set to a small font size that fits the HTML width.  On conversion to text small sizes can't be honoured, and so the allocated width may be too narrow for the text to be placed in the cell 
·	sometimes the "nowrap" attribute has been set on a cell to stop it breaking over several lines.  Again most browsers will honour this request by widening the table if need be, but this option isn't always available to Detagger, especially in heavily nested tables.

In such cases this policy allows all WIDTH attributes to be ignored by Detagger.  When WIDTH attributes are ignored, Detagger is free to do the best it can to fit the data into the space available, subject to any limits suggested by the Target table width and Adjust table to page width policies. 
May break words to fit target width
New in version 2.4 
Menu location: Configuration Options -> Conversion to text -> Tables 
When Detagger converts tables, it will do a best-fit to the available page width, but there are occasions when it is difficult to fit a wide table into a narrow target page width.  This is especially true of tables where small font sizes have been used in the HTML to achieve a fit, in plain ASCII text Detagger can't use an equivalent trick. 
When compressing a table to fit a small target width, Detagger will split text across multiple lines, moving words onto the next line to make the column narrower, but it won't break individual words in two in order to achieve a fit. 
This option tells Detagger that it can, if necessary, break up long words in order to narrow a column to fit.  Detagger implements this in a fairly brutal manner - for example it doesn't hyphenate the broken text - and so this option should be used sparingly. 
Nested Table scaling factor (percent)
New in version 2.4 
Menu location: Configuration Options -> Conversion to text -> Tables 
When table widths are not supplied (or the policy Ignore table width attributes is enabled), then Detagger sometimes struggles to fit heavily nested tables to a restrictive target page or table width. 
The reason for this is that Detagger first lays out the inner tables, and then embeds these in the outer tables when they are laid out.  the problem is that the inner tables may expand to be too wide, making it impossible to get the outer tables to fit on the page. 
This policy scales back the amount of space a nested table can take. It's expressed as a percentage.  100(%) implies no limit on the inner table, giving the behaviour of earlier versions of Detagger.  0 implies the maximum restriction on inner tables (although this isn't, of course, to zero width). 
The default value of set to 75. 
If you find that heavily nested tables aren't fitting into the desired page width, try reducing this value. 
If you find that inner tables are getting broken over several lines, try setting this policy to 100.  If that still fails, you may need to consider disabling the policy Adjust table to page width and increasing the value of Target table width 
NOTE	This policy is ignored is the Target table width is set larger than 100, since it is then assumed the user is allowing wide tables to preserve the layout.

Miscellaneous Table options
These are miscellaneous options related to how tables are converted and the markup found inside tables is treated. 
·	Allow headings inside tables
·	Default table indentation
Allow headings inside tables
Menu location: Configuration Options -> Conversion to text -> Tables 
When this option is selected it prevents any heading markup inside tables being interpreted as such.  Not only will this suppress any underlining the heading would have had added, but it will also prevent the width of the whole heading being used in calculating the "minimum width" required for each column. 
As a result this will actually help make some tables narrower, as the "minimum" width required drops as the "heading" text is now allowed to be split over two or more lines. 
Default table indentation
Menu location: Configuration Options -> Conversion to text -> Tables 
This option specifies the value - in spaces - of an indentation to be applied to all tables in the output.  This indentation will reduce the page width available to the table. 

Miscellaneous policies
These policies are not set via the main options screens. 
·	Configuration file policies
·	Other policies
Configuration file policies
These policies record the location of any additional configuration files that are to be used in the conversion.  They are usually selected using the Configuration Files menu 
·	Fragments File
·	Text Commands File
Fragments File
Menu location: Configuration Options -> Configuration Files -> Text fragments file 
In the full version you can add headers and footers to each text file created by using Using a Text Fragments File.  This policy allows you to specify the file in which those fragments are defined. 
If you don't select a fragment file, then no headers or footers will be added. 
Note: In the evaluation version, a standard header and footer are added, and this feature is not available.  It is available in the registered version 
See also Using a Text Fragments File 
Text Commands File
Menu location: Configuration Options -> Configuration Files -> Text commands file 
Specifies the location of any text commands file to be used to define text manipulations to be performed on the text as it is being read in, and prior to conversion. 

Other policies
Some policies cannot be set through the normal options screens. These include 
·	Allow by-line to be used for Author field
·	Concatenate results into one file
·	Lines to ignore at start of file
·	Lines to ignore at end of file
Allow by-line to be used for Author field
Menu location: (none at present.  Edit the policy file) 
When selected, Detagger will search the first 40 lines of the document looking for a "By" line in the hope of identifying the author.  Any value located this way, will then be available for use in a generated text fragment via the AUTHOR fragment tag. 
Note	this option can be edited into a policy file, but cannot currently be set via the GUI.

Concatenate results into one file
Menu location: On main dialog, set 'Output Type' to concatenate files 
When selected this specifies that when converting multiple files at once, all the results should be concatenated into a single results file. 
This has the same effect as selecting _"Concatenate results into one file"_ as the output type 
Lines to ignore at start of file
Menu location: (none at present.  Edit the policy file) 
This specifies how many lines from the input files should be ignored at the start of the file.  These lines will be discarded from the output. 
This can be useful when converting file copied from a news feed or whatever that adds a small data header to the file. 
Lines to ignore at end of file
Menu location: (none at present.  Edit the policy file) 
This specifies how many lines from the input files should be ignored at the end of the file.  Up to 40 lines may be ignored in this way.  These lines will be discarded from the output. 
This can be useful when converting file copied from a news feed or whatever that adds a small data footer to the file. 

Using a Text Fragments File
Detagger allows you to define your own text headers and footers when converting the file to text.  You do this by defining "text fragments" in an external "Text Fragments File" as follows 
        $_$_DEFINE_TEXT_FRAGMENT <fragment_name>
        ..
        ... fragment lines...
        ...
        $_$_END_BLOCK
Having placed your block definitions in an external text file, you should then use the Menu option 
Conversion Options | Convert to text | Text headers 
to specify where this file can be located.  This location will be saved in your Policy file, and may be lost if you load a new policy file. 
Using this approach you can define 
header and footer fragments

	These will be placed at the top and bottom of each file when
Detagger is converting files to text. This allows you to
add standard copyright and contact information, and if you
use the TEXT_HEADER tags you can create headers
that are tailored to the contents of each file.	
 	 	
separator fragments

	These will be places between results when you choose to
convert multiple files and concatenate the results into
a single file.	
Header and footer fragments
Detagger recognises two fragment names 
TEXT_HEADER	the text to be placed at the top of each output file
TEXT_FOOTER	the text to be placed at the end of each output file
If either of these fragments is not defined in the text fragments file, or if you don't supply a text fragment file, then the header and/or footer will be omitted. 
Note: This feature is not available in the evaluation version of Detagger, instead in this version a default header and footer are used 

Default header and footer
In the evaluation version of Detagger the header and footer are defined as follows:- 
        $_$_DEFINE_TEXT_FRAGMENT TEXT_HEADER
        [[TEXT_HEADER BOX_TOP]]
        [[TEXT_HEADER VERSION]]
        [[TEXT_HEADER TITLE]]
        [[TEXT_HEADER BOX_MIDDLE]]
        [[TEXT_HEADER OUT_FILENAME]]
        [[TEXT_HEADER OUT_FILESIZE]]
        [[TEXT_HEADER TIMESTAMP]]
        [[TEXT_HEADER BOX_BOTTOM]]
 
        $_$_END_BLOCK

        $_$_DEFINE_TEXT_FRAGMENT TEXT_FOOTER
 
        [[LINERULE]]
        Converted by an unregistered version of [[VERSION]]
        Visit http://www.jafsoft.com/detagger/ 
        (this message is omitted in registered version
        [[LINERULE]]
        $_$_END_BLOCK
This gives example results as follows 
        /----------------------------------------------------------------------\
        | < This header can be omitted in the registered version >             |
        | Converted by : Detagger 2.0 (unregistered)                           |
        |              : www.jafsoft.com/detagger/                             |
        | Title        : The JafSoft text conversion FAQ                       |
        |                                                                      |
        | File name    : a2hfaq.txt                                            |
        | File size    : 8,914 bytes (approx)                                  |
        | Create date  : 7-Aug-2002                                            |
        \----------------------------------------------------------------------/

        <main file contents>

        ========================================================================
        Converted by an unregistered version of Detagger 2.0
        Visit http://www.jafsoft.com/detagger/ 
        (this message is omitted in registered version)
        ========================================================================
TEXT_HEADER Tags
TEXT_HEADER tags are Fragment tags that can be placed inside text fragments and be replaced by a suitable box line in the output.  The box lines will adjust to the current page width. 
TEXT_HEADER tags have the form 
        [[TEXT_HEADER <type>]]
and should be placed on a line by itself inside the fragment.  For example the fragment :- 
        $_$_DEFINE_TEXT_FRAGMENT TEXT_HEADER
        [[TEXT_HEADER BOX_TOP]]
        [[TEXT_HEADER OUT_FILENAME]]
        [[TEXT_HEADER OUT_FILESIZE]]
        [[TEXT_HEADER BOX_BOTTOM]]
        $_$_END_BLOCK
Gives the output 
        /----------------------------------------------------------------------\
        | File name    : a2hfaq.txt                                            |
        | File size    : 8,914 bytes (approx)                                  |
        \----------------------------------------------------------------------/
Possible TEXT_HEADER tag types include 
AUTHOR

	This tag will add a box line identifying the
document author (taken from an author line, or
from a META tag in the original)	
 	 	
BOX_BOTTOM	Adds a bottom line to the box	
 	 	
BOX_MIDDLE	Adds a middle (blank) line to the box	
 	 	
BOX_TOP	Adds a top line to the box	
 	 	
LAST_EMAIL
	Adds a email line to the box for the last observed
email hyperlink (e.g. taken from a signature)	
 	 	
LAST_URL
	Adds a URL line to the box based on the last
observed hyperlink	
 	 	
IN_FILENAME	Input filename	
 	 	
IN_FILESIZE	Input file size	
 	 	
IN_FILEDATE	Input file date	
 	 	
OUT_FILENAME	Output file name	
 	 	
OUT_FILESIZE
	Output file size (in bytes).  Only approximate,
as it estimates the header size	
 	 	
TIMESTAMP	Adds a "date" line for the date of the conversion	
 	 	
TITLE
	Adds a title line.  Taken from the <TITLE> tag,
or from the first heading	
 	 	
TOP_EMAIL
	Adds a email line to the box based on the first
email hyperlink in the source	
 	 	
TOP_URL
	Adds a URL line to the box based on the first
observed hyperlink	
 	 	
VERSION
	Adds a line identifying that the file was
converted by Detagger	
Separator fragments
When converting multiples files at once and choosing to concatenate results, Detagger can be made to add a separator between the results for each file. 
The fragment names recognised are 
TEXT_SEPARATOR
	the text to be placed between each set of results
in the output file when converting files to text	
 	 	
HTML_SEPARATOR

	the HTML to be placed between each set of results
in the output HTML file when selectively removing
markup from the input files.  Care should be taken
to ensure the HTML in this fragment is compatible
with that from the results files.	
If either of these fragments is not defined in the text fragments file, or if you don't supply a text fragment file, then there will be no separators between results in the output file. 
Note: This feature is not available in the evaluation version of Detagger, instead default results separators are used 

Fragment tags
Within your fragment definitions you can supply any text you want, but this will be the same for each file converted.  A number of fragment tags are recognised in the form 
[[TAGNAME <details>]] 
Where tags of this form are recognised, Detagger will replace the tag by a suitable value. 
Of particular interest are the TEXT_HEADER tags.  These tags produce a line of text suitable to be placed in a box at the top of the text file.  The box width will be adjusted (where possible) to fit the chosen target page width. 
For other fragments tags supported by JafSoft converters, please read the section on fragment tags in the Tag Manual available online at http://www.jafsoft.com/doco/tag_manual_3.html#Section_3.3 
Note: Not all the tags described in that document are suitable for use inside Detagger files 

The DATA fragment tag
The DATA fragment tag can be used to imbed information about the file being converted into the output. 
In Detagger the main use of the DATA fragment tag is in text fragment or in replacement strings in the replace_text Text command (See An example use of a Text Commands File) 
        [[DATA <data_type>]]
where, 
<data_type>	This is the type of data to be substituted in	
Supported data types include 
VERSION
TITLE
IN_FILENAME
OUT_FILENAME
IN_FILESIZE
OUT_FILESIZE
IN_FILEDATE
TIMESTAMP
COMMENT	Indicates the program version of Detagger used in the conversion
Document title (taken from the HTML header)
Input filename
Output filename
Input file size (in bytes)
Output file size
Timestamp of input file
Timestamp of conversion
Free text comment	
Note, when used in a the replace_text Text command only those data types known when the input file is opened will work, so for example TITLE won't work in that context. 

Using a Text Commands File
As of version 2.3, Detagger allows the use of "Text Commands".  These are commands that allow you to modify the text before it is converted. 
The commands should be placed in an external "Text Commands File".  This file can be chosen from Conversion Options -> Config File Locations menu option. 
Various commands are available as follows 
ignore_line
remove_text
replace_text	Identifies lines to be discarded from the input
Identifies text to be removed from the input
Identifies text to be replaced by other text	
Text Commands available
Text Command : ignore_line
The ignore_line command identifies lines that should be ignored in the input. 
Syntax: 
        ignore_line <line_selection>
Any line matching the specified line_selection criteria will be ignored in the output.  This can be a useful way of ignoring page markers in an input file, as these don't always transfer well under the conversion. 

Text Command : remove_text
The remove_text command identifies text that should be removed from the input. 
Syntax: 
        remove_text <match_type> "match string"
Any line containing text that matches the specified match_type for the supplied "match string" will have the matching text removed. 

Text Command : replace_text
The remove_text command identifies text that should be removed from the input. 
Syntax: 
        replace_text <match_type> "match string" by_string "new string"
or
        replace_text <match_type> "match string" by_character "<char>"
Any line containing text that matches the specified match_type for the supplied "match string" will have the matching text replaced. 
If the replacement is specified as 
by_string "new string" 
then the text is replaced by the new string.  If the replacement is specified as 
by_character "<char>" 
then the string is replaced by a string of equal length consisting of this single character repeated.  This can be useful for example to replace change bar characters by spaces in a document where the change bars have confused the program, or to replace other characters inside a table that are confusing the detection of the table's true layout. 
Note	The new string can contain The DATA fragment tag which allows details about the file (e.g. it's name) to be included in the substitution. See An example use of a Text Commands File 

Text Command line elements
line_selection
The line_selection element is actually a combination of a number of simpler elements as follows 
Syntax: 
        <line_match> <match_type> "match string"
That is the line_selection consists of a line_match, a match_type, and then the actual "match string" to be matched.  All three elements must be present in order for the line_selection to be valid. 
The following are all valid examples 
        starting_with   string          "Chapter"
        starting_with   exact_phrase    "Author : "
 
        containing      phrase          "click here"
        containing      string          "http://"
line_match
The line_match element specifies where on the input line the specified text should be located.  The options are 
 	starting_with	Text should be at start of line (ignoring any white space)	
 	 	 	
 	containing	Text can be anywhere on the input line	
Care should be used when using the containing option, as false matches are more likely to occur. 
match_type
The match_type element specifies how any supplied match string should be matched.  The options are 
string

	This specifies that a string should be matched.
This is, in fact, the most general of match types
and is the one that would normally be used.  This
match type is case-insensitive.	
 	 	
exact_string	Same as "string", but case-sensitive.	
 	 	
phrase

	A "phrase" is a string that is surrounded by white space
and/or punctuation on either side (see below).
This match type is case-insensitive	
 	 	
exact_phrase	Same as "phrase", but case-sensitive.	
 	 	
wildcard	Not yet supported (*)	
The match_type phrase is a special case.  This is a string that is surrounded by white space or punctuation on either side.  So whereas the string "the" would match "then", the phrase "the" wouldn't because the "n" in "then" is not a white space character. 
The start and end of a line count as white space, and any leading or trailing punctuation is allowed.  Phase is therefore a more precise match - even for single words - than string. 
Consider the following example, concentrating on the letters "ten" in the word "tense" 
This is a tense situation.... 
The following would apply 
match_type	Matches?	
string "ten"
	Yes.  The "ten" matches the first three
characters in "tense" in the middle	
 	 	
extact_string "Ten"
	No.  The "t" in "tense" is lower case, so
the match fails	
 	 	
phrase "ten"
	No.  "ten" is not surrounded by white space
or punctuation because it is followed by "se"	
 	 	
exact_phrase "tense situation"
	Yes.  The case matches, and there is a space
before and punctuation (the "...") afterwards.	
replace_type
The replace_type element is used in the replace_text command to specify what type of text replacement should be executed.  The element should be immediately followed by the replacement text in quotes. 
There are two options:- 
by_string
	The matched text should simply be replaced
by the replacement text.	
 	 	
by_character

	The matched text should be replaced by an
equal length string composed solely of the
single character in the replacement text.	
The by_character option allows a string to be "blanked out" by the character of your choice, but without altering the line length or spacing etc.  This can be useful, for example to replace all DOS line drawing characters by blanks in table, so as to let the software make a better stab at detecting the table layout. 

An example use of a Text Commands File
The following is a real-life example, sent to me by one of my users. They had a files that consisted of a table of data that was to be imported into an Excel spreadsheet.  By using the policies 
        output table format : 2
        Add delimited table markers : yes
They were able to turn the table into delimited data which they could easily extract and then import into Excel.  However the problem then was that they couldn't tell which data had come from which file.  As it happened the filename matched an instrument name, and they wanted the imported data to include the instrument/filename. 
I actually modified Detagger to make this work for them.  The solution was to use a text command file as follows 
        replace_text string "<TR>" by_string "<TR><TD>[[DATA IN_FILENAME]]</TD>"
In this case the opening <TR> of each table was replaced by a <TR>, a <TD> a fragment tag and then a </TD>.  The fragment tag [[DATA IN_FILENAME]] gets substituted by the input filename.  The net effect of this substitution is to create the appearance of an extra column in each table consisting of the filename in the first cell of each row. 
Once the modified table is converted to delimited data, the filename is effectively inserted into each row of the table, so that once imported into Excel each data row can identify which file (and hence which instrument) the data came from. 
See The DATA fragment tag 

Ordering your copy
You can buy the windows version on-line.  Registered users will also get a copy of the console version, which is better suited for automated conversions. 
An API version is also available.  You should contact us with details of your needs to get a quote for that.  Purchasers of the API version will get a complimentary license for the Windows version. 

Windows Version
Detagger costs $25 per copy. 
Anyone who buys a copy of Detagger may freely take backup copies, and install it on all their home machines, and one desktop and one portable at work. 
Organisations wanting multiple copies will be offered discounts, contact info<at>jafsoft.com (replace the "<at>" by "@") for details. 
Registration details can be found on the web page 
http://www.jafsoft.com/detagger/register.html 
This URL is also shown on the Help -> About window. 
For more information, visit the web page, or email info<at>jafsoft.com (replace the "<at>" by "@"). 
As well as the Windows version Detagger is available as a console version, and there is also a programmers API version available. 

API version
Software developers can  purchase an API version of Detagger under separate license.  Contact info<at>jafsoft.com (replace the "<at>" by "@") for details. 
The API offers access to the full functionality of Detagger.  It is delivered as both a DLL or link library.  A demonstration package is available on the web that shows the API being called from both C++ and Visual Basic sample programs. 
You can get more information by visiting 
http://www.jafsoft.com/developers/api_demos.html 
where you will also be able to download an evaluation copy.  This evaluation will add headers to output and convert some text to UPPER CASE, but is otherwise fully functional. 
The API software itself is written in C++, but the API interface is declared as a set of "C" routines, and a C header file is supplied to define the API.  The API is supplied as both a link library and a DLL.  The code can be called from C/C++ software or (in DLL form only) Visual Basic.  The above link contains evaluation downloads that demonstrate both in sample programs. 
Some customers have also successfully called the API from: 
·	C/C++
·	Java (using JNI)
·	Visual Basic
·	C#
·	Lotus Notes
·	Delphi
The API is supplied in digital form under Windows, but with access to the source code (not normally supplied), the API has been successfully built on the following platforms 
·	Windows 98 onwards
·	OpenVMS
·	Linux
·	Solaris
·	Mac OS
Access to non-Windows system is currently only possible if you purchase a source code license. 
If you are interested in the API, send details of what your intended use is to info<at>jafsoft.com.  You should specify 
·	whether this is a commercial or non-commercial project
·	whether the API is to be used in a server, a web server or end user application
·	the expected number of users of the application
Support
Developers who purchase the API get a complimentary copy of the windows product, primarily to allow them to easily prototype any "Policy files" for the conversions they want to attempt.  The functionality of the Windows version and the API may differ slightly. 
Developers will also be offered free of charge any updates that occur for up to one year from the date of purchase. During this time email support will be offered to a few named contacts. 
After one year developers may choose to continue to receive upgrades and support by paying an annual fee in advance, usually set at around 20% of the initial license fee. 
Unfortunately we do not have the resources to offer support to your end users. 

Detagger on the Web
The Detagger home page can be found at 
http://www.jafsoft.com/detagger/ 
It can be registered on-line by visiting 
http://www.jafsoft.com/detagger/register.html 
Updates will be announced at 
http://www.jafsoft.com/detagger/updates.html 
Users wishing to try out the console version should visit 
http://www.jafsoft.com/developers/console_demos.html 
Software developers who wish to integrate the functionality of Detagger into their own applications can get a trial copy of the API version by visiting 
http://www.jafsoft.com/developers/api_demos.html 
Other products offered by JafSoft Limited can be found at 
http://www.jafsoft.com/products/ 
Most of the URLs are available from the program's About screen. 
The author can be contacted at info<at>jafsoft.com (replace the "<at>" by "@"). 
Upgrades
It is our intention to continue development of this product, and for as long as possible make upgrades available via the Internet.  Check the update menu for updates, or visit the web page 
http://www.jafsoft.com/detagger/updates.html 
Change History
Here is the change history of Detagger 
·	Version 2.4 (June 2005)
·	Version 2.3.2 (September 2004)
·	Version 2.3 (April 2004)
·	Version 2.2 (May 2003)
·	Version 2.1 (March 2003)
·	Version 2.0 (December 2002)
·	Version 1.0 (August 2002)
Version 2.4 (June 2005)
Version 2.4 contains a small number of minor bug fixes and policy changes 

Changes made in 2.4
·	a new menu option Data Extraction appears under the Conversion Options -> Conversion to Text menu.  These options allow you to select which data should be extracted from the soured document.
Policies added in 2.4
·	Show only table data.  The option is part of the new Data Extraction polices, and allows you to specify that only text contained in HTML <TABLE> markup should be included in the output document. 
·	Maximum table depth and Minimum table depth.   These options are also part of the new Data extraction policies, and allow you to specify which levels of a set of nested tables should be included in the output. 
·	Ignore table WIDTH attributes.  Sometimes the widths set in an HTML table don't give enough room to lay out the text when converting to text.  In such cases this policy allows all WIDTH attributes to be ignored. 
·	The policy preserve hyperlinks in text output added in version 2.3.2 is now accessible on the Text Hyperlink policies option panel. 
·	The policies remove HTML <DIV> tags and remove HTML <SPAN> tags is added. 
·	The policy May break words to fit target width is added.  This allows Detagger to break up long words in a table in order to allow the column to be made narrow enough to fit a small target width. 
·	The policy List item templates is added.  This allows you to specify the text "decoration" added to ordered list items. 
·	The policy Nested Table scaling factor (percent) is added.  This can be used to limit the space allowed to nested tables.  This can assist when trying to squeeze heavily nested and wide tables into a limited fixed width.

Bugs fixed :- 
·	Text commands using match or replace expressions containing double quote characters weren't being accepted. 
·	Tables nested inside other tables where the outer table contained no <tr>..</tr> tags were not being processed correctly. 
·	Various policies were not being saved correctly after being changed, or when policies were saved to file. 
·	When Preserve all white space from the original source is enabled tabs in the original document are preserved.  Previously they were being converted to spaces. 
·	A number of policies weren't being saved to policy file on exit, especially if users changes between tabs on the property sheet before pressing "Apply" 
·	PRE sections inside tables were being handled poorly.  Large PRE sections (several 1000 lines) caused a performance hit which is now fixed, and in heavily nested tables the PRE text was compressed and lost it's formatting. Now the presence of a PRE section is liable to cause the table to become wider, and if the PRE section won't fit each line will be broken over several lines, but the formatting is preserved.

Version 2.3.2 (September 2004)
Version 2.3.2 contains a number of bug fixes and minor enhancements over version 2.3.  It also contains enhanced support for handling Unicode, especially UTF-16. 

Changes in version 2.3.2
·	Improved Unicode support, and added support for UTF-16. See Working with Unicode 
·	New German translation of the user interface supplied by Jürgen Krane. 
·	Added support for DATA tag and IN_FILENAME and OUT_FILENAME attribute3 in text fragments.  See The DATA fragment tag 
·	Changed the default page width to 76 from 72.  For pages that add a <br> to each line this reduces the chances on unwanted additional line feeds in the output when converting to text. You can always override this value via the policy target page width 
·	Various formatting changes to improve table layout (especially nested tables).
New policies in version 2.3.2
Here are the policies added in version 2.3.2 :- 
·	Input text encoding
·	Remove <!DOCTYPE> tags 
·	Preserve hyperlinks in text output
Bugs fixed in version 2.3.2
·	Fixed a number of bugs when processing tables with missing <TR>, </TR> and <TD> tags.  These could cause the table to not be processed or, in extreme cases, to be omitted from the output. 
·	Fixed bug where lines starting with a quotation mark didn't get correctly set to the target page width. 
·	Fixed bug whereby a nested table was indented when converted to delimited data. 
·	Fixed a number of bugs in which the presence of tags in embedded JavaScript (such as <style>, <body>, <title> etc) was confusing the file parsing, and occasionally leaving unwanted Javascript in the output. 
·	Files containing Unicode entities were not getting the Unicode file marker added when converted to text.  This prevented some files (e.g. Arabic) from being displayed properly. 
·	A bug meant that occasionally the last line of a file wouldn't be read properly.  This might have caused some conversion issues but was actually spotted when the last line in a policy file was ignored. 
·	Documents with a missing or misplaced </head> tag were converted to an empty file when converted to text. 
·	When removing hyperlinks, the first link after a NAME anchor tag wasn't being removed. 
·	When converting multiple files (as opposed to wildcards) the program would sometimes get confused calculation the output filename

Version 2.3 (April 2004)
Here are the policies added in version 2.3 :- 

Changes in Version 2.3
·	When converting files in sub-folder of the main input directory new options on the main screen allow you to have the output files placed in a parallel folder structure under the output folder.  See Output Directory 
·	For the console version the /SUBFOLDERS and /TREE qualifiers are introduced to allow you to search sub-folders to locate input files, and to direct output files into a parallel folder structure to the input files. 
·	A new feature known as "Text Commands" allows you perform certain edits and manipulations on the source text before it is passed to the conversion process.  For files that are not straight HTML files, but have instead come from elsewhere, these manipulations can be used to remove certain features (e.g. a non-HTML header on the document), or to turn certain markers into something that makes the file more HTML-like.

For example SEC filings use the HTML-like <TEXT> tag to markup plain text. By using a Text Command to change this into a <PRE> tag, the HTML converter is then tricked into leaving the format of the text in this section alone. 
See Using a Text Commands File 
·	A new Tip of the Day feature has been added.  The good news is that if you don't like it you can switch it off straight away and it will never bother you again :-)

Alternatively, the tips can be read in sequence should you prefer by using the next/last buttons to go through them, and the screen can be brought up from an option on the settings menu. 
If anyone has suggestions as to topics they would like tips on, please feel free to send them to info<at>jafsoft.com. 
·	A Dutch translation has been supplied courtesy of Jurrien Dokter
New policy options in Version 2.3
Several new policy options are added in version 2.3 
General 
·	Lines to ignore at end of file
·	Lines to ignore at start of file
External configuration files 
·	Fragments File
·	Text Commands File
Conversion to text 
·	Allow headings inside tables
·	Default table indentation
·	Target table width 
·	Heading underline characters
·	Bullet point characters
·	Text bullet characters 
·	Start list marker and End list marker
·	Start table marker and End table marker 
·	Output indentation positions 
·	Allow by-line to be used for Author field
Markup removal 
·	Remove HTML table tags
·	Remove HTML <OBJECT> tags
Version 2.2 (May 2003)
Version 2.2 contains a small number of improvements and enhancements over version 2.1. 

Changes in Version 2.2
On the Settings menu a new option allows you to Remember settings on exit.  If selected the current file, output directory, policy file and conversion options are remembered and used as the starting values next time you run the program. 
New features in Version 2.2
A number of new options have been added to allow you to remove certain types of tags and attributes from inside tables only. 
A new "Tables" option has been added under "markup manipulation" on the Conversion options menu.  This takes you to the Detag Tables options tab which has the following options 
·	Remove HTML <P> tags from tables

·	Remove HTML alignment attributes from tables
·	Remove HTML color attributes from tables
·	Remove HTML size attributes from tables
Version 2.1 (March 2003)
Version 2.1 contains a small number of improvements and enhancements over version 2.0. 

Changes in Version 2.1
·	Performance improvements.  A number of small bugs have been fixed. Also a number of performance enhancements have been made.  These will only really be noticeable when converting large files.
New features in Version 2.1
·	Concatenate results.  It is now possible to convert several files at once and have the results output to a single file.  To do this select "Concatenate results into a single file" for the Conversion Type. 
·	Searching sub-folders.  It is now possible to get the program to look in sub-folders of the one selected for files to convert.  To do this just tick the "Search Sub-folders" checkbox.  Note, at present all results will only be put in a single output folder, and not into a structure that matches the original. See Input selection 
·	New Table border option.  A new option allows you to output blank lines between rows when converting tables to text. See Allow blank row separator lines 
·	New table data handling options.  New options allow you to fine tune the conversion of tables to delimited data. See Convert only innermost tables and Add delimited table markers 

Version 2.0 (December 2002)
Version 2.0 contains a number of changes suggested by users of Detagger, as well as a number of bug fixes and code enhancements. 

Changes in Version 2.0
·	Name change.  I've decided to lose the "-" in the name, so "De-tagger" becomes "Detagger" as of version 2.0 :-) 
·	The version 2.0 code has been improved when dealing with large files Previously the performance seriously degraded on files over 0.5 Mb in size.  The new version is significantly faster when handling such files, and furthermore there is now no theoretical limit to file size, although if a whole file is placed in a table there may still be problems. 
·	Several bugs with saving options ("policies") to file have been fixed. The main dialog now has a section for policy files to be loaded to make their use much more convenient.  Recently saved files can be quickly recalled from the drop down list. 
·	A console version is now available to registered users.  The console version can be run from the command line and is better suited to batch operation.  A demonstration of the console version can be got from the website at http://www.jafsoft.com/developers/console_demos.html 
·	For those wishing to integrate the functionality of Detagger into their own software, and API version is available.  This is sold under a separate license, subject to negotiation based on the intended use of the API. You can find out more and download an evaluation version from http://www.jafsoft.com/developers/api_demos.html 

New features in Version 2.0
Several new features have been added to Detagger since version 1.0. 
Markup removal 
Tag removal options 
Remove emphasis tags
Removes all the bold and italic markup from the HTML 
Remove style sheet
Removes all the <STYLE> sections from the HTML, together with any reference to an external CSS style sheet. 
Remove HTML <IMG> tags
Removes all the <IMG> tags from a HTML document. 
HTML-to-Text conversion 
Paragraph formatting 
Output each paragraph on a single line 
Each paragraph is output without hard line breaks (except at the end).  This can be useful, depending on how and where the resulting text is to be used 
Miscellaneous text formatting 
May add Unicode marker to output file 
When Unicode is detected in the source the software will output the text as UTF8 and optionally add a file marker that will label the file as "Unicode" in a way that most applications that can cope with Unicode will recognize. 
Hyperlinks handling 
Display link URLs 
An option to display hyperlink URLs immediately after the display text in the output. 
Replace <IMG> tags by a text marker 
Option to place a marker in the text to show where an image has been removed. 
Use the ALT attribute to replace <IMG> tags 
Option to use the ALT attribute of an <ING> tag in it's text marker.  This can help give some sense of what was being shown on the original page. 
	Tables conversion
Convert table to plain text 
Convert table to comma-delimited data 
Convert table to tab-delimited data 
These options (which are mutually exclusive), determine how any <TABLE>s in the HTML should be output in the text.  The options allow the table to be converted to plain text, or to delimited text better suited for loading into a spreadsheet such as Excel.

Version 1.0 (August 2002)
The initial release. 

Documentation available
A set of HTML documentation is maintained for Detagger.  This is identical in content to the Help file available.  Both documents are generated by AscToHTM and AscToRTF from the same text file. 
You should have got a set of this documentation when you got your copy of Detagger, however you can get more recent versions by visiting the web site 
http://www.jafsoft.com/doco/docindex.html 
where you will also find instructions on how to get a .zip copy for your own use. 

Acknowledgements
I'd like to thank all the people who have helped me produce Detagger and its related products.  Although Detagger is a one-man programming effort, I really wouldn't have come this far without the support and encouragement of friends and users. 
I'd like to thank my beta testers. 
For Detagger special thanks also go to Greg Platt for suggesting text conversions options that would never have occurred to me., 
A special thanks to the people who volunteered to translate aspects of JafSoft software into other languages for the benefit of users. They are 
Andre Martinez (French) 
Gonzalo San Martin (Spanish). 
Gianluigi Pizzuto (Italian) 
Dan Svarreby (Swedish) 
Alexander (aka J-34) (Russian) 
Jurrien Dokter (Dutch) 
Jürgen Krane (German) 
Finally, my biggest thanks are to my registered customers who keep asking me features that would never even have occurred to me.