HTML txt Manual

From Wiki
Jump to: navigation, search

By Daniel Hellerstein

HTML_TXT: An HTML to Text Converter


HTML_TXT, version 1.10, is used to convert an HTML file to a text file. HTML_TXT is written in REXX and is meant to be run under OS/2. However, it also runs under other REXX interpreters, such as Regina REXX for DOS and Regina REXX for WIN95.

HTML_TXT will attempt to maintain the format of the HTML document by using appropriate spacing and ASCII characters. HTML_TXT can use ASCII art (lines and boxes), as well as other high-ascii characters, to improve the appearance of the output (text) file.

HTML_TXT can be customized in a number of ways. For example, you can:

  • suppress the use of line art and other high ASCII characters (your output will be rougher, but will suffer from fewer compatability problems).
  • display tables (including nested tables) in a tabular format with auto-sized columns
  • change the bullet characters used in ordered lists
  • display <Hn> headings as an hierarchical outline
  • change characters used to signify logical elements (emphasis, anchors, list bullets, etc.)

Installling and Executing HTML_TXT

HTML_TXT is easy to install and run:

  1. Copy HTML_TXT.CMD to a directory.
  2. Open up an OS/2 prompt, change to the directory containing HTML_TXT.CMD, and type HTML_TXT at the command prompt.
  3. Follow the instructions.

No other libraries or support files are needed.

The READ.ME file describes how to install HTML_TXT if you are a Regina REXX user.

Running from the command line

You can also run HTML_TXT from the command line. The syntax is (where x:\HTMLTXT is the directory containing HTML_TXT.CMD):

x:\HTMLTXT>HTML_TXT file.htm file.txt /var var1=val1 ; var2=val2


file.htm is the input file (an HTML document)
file.txt is the output file (a text document)
/VAR var1=val1 ; var2=val2 is an optional list of parameters to modify.


D:\HTMLTXT HTML_TXT foo.htm foo.txt /VAR lineart=0 ; lagul=* $

Alternatively, you can run HTML_TXT from an (OS/2) prompt without any arguments; you will then be asked for an input and output file, and will be permitted to change the values of several of the more important parameters.


HTML_TXT attempts to support many HTML options; including nested tables, nested lists, centering, and recognition of FORM elements.

The following summarizes HTML_TXT's capabilities.

This table assumes that you have a basic familiarity with HTML.

Type of Feature Discussion Customization
Character Display HTML_TXT uses a few tricks to identify where emphasis (italics, bold, etc.) are used in an HTML document. These include:
  • Capitalization of bold emphasis
  • Underlining of underlined emphasis
  • "quoting" of italic and <A>nchor emphasis
  • "quoting" of the labels used to identify image elements. Image elements consist of <IMG>s and <AREA>s (the ALT attribute, or the source image filename, is used as the label).
  • DOCAPS specifies when to use CAPITALIZATION as an emphasis
  • DOULINE specifies when to use under_linining as an emphasis.
  • DOQUOTE specifies when to use "quotes" as an emphasis (suggestion: you might want to add FONT to DOQUOTE)
    QUOTESTRING1 and QUOTESTRING2 specify the characters to use "as quotes"
  • PREA and POSTA specify the characters used to identify <A>nchors.
  • PREIMG and POSTIMG specify the characters to use as "quotes" around image labels.
    IMGSTRING_MAX is used to control how to display an image label.

HTML_TXT supports nested lists - with successively deeper indentations used to display nested lists. Supported lists include <UL> and <MENU> unordered lists, <OL> ordered lists, <DL> definition lists, and <BLOCKQUOTE> ''both-side indented'' blocks. You can:

  • Change the bullet styles used in
      and <MENU> lists - with different bullets used at different nesting levels.
    • Change the numbering style used (by default) for <OL> lists. Note that HTML_TXT will use TYPE and START attributes of <OL> lists, and will use the VALUE attribute (if specified) of a <LI>.

FLAGUL and FLAGMENU specifies the bullets to use in <UL> and <MENU> (unordered) lists ''OL_NUMBERS'' specifies the "numbers" to use in an <OL> (ordered) list.


HTML_TXT supports two methods of displaying <Hn> headings (where n=1,2,..,7).

  1. Headings can be "quoted"
  2. Headings can be used to create a hierarchical outline.

A hierarchical outline refers to headers that identify a section. For example:

 I)Main section
      I.a.1) Sub subsection
      I.b)Sub section 2

In the above example: the I) and I.a) could be used by HTML_TXT to display an \H2/ and an \H3/ heading (respectively)

  • PREH1 and POSTH1 specify the "quote" character to use for \H1/ headings, PREHN and POSTHN specify the "quote" character to use for other <Hn> headings (n=2,..,7).
  • HN_OUTLINE specifies at what heading level to start the hierarchical index at (i.e.; you probably do not want \H1/ headings to be the "top level numbers" of an index) *HN_NUMBERS.n (n=1,2,.,7) specifies numbering styles to use

HTML_TXT supports tabluar display of nested tables. Many (but not all) <TABLE> attributes are supported, including:

  • Display of CAPTION, either at the top or bottom of the table (depending on the value of the CAPTION ALIGN attribute).
  • WIDTH attributes of <TABLE> and <TD>. If WIDTH is not specified, HTML_TXT will "auto-size" columns, assigning more width to columns with wider content (that is, that would have longer lines of text if horizontal space was not limited).<nowiki> * COLSPAN and ROWSPAN attributes are recognized. ROWSPAN is only partially supported, and may not work properly in complicated tables (tables with lots of ROWSPANs and COLSPANs). * ALIGN and VALIGN attributes of <nowiki><TR> and <TD>
  • BORDER attribute of <TABLE> (either a single or double line is drawn, depending on the value of the BORDER= attribute).
  • FRAME="VOID" and RULES="NONE" attributes of <TABLE> (suppress outer and inner border, respectively)
  • the ALIGN attribute of <TABLE> is partially supported:
    1. ALIGN=LEFT in a top level table (that is not nested in another table) enablers other text (and other tables) to flow around this table. Note that a <BR CLEAR=LEFT> will break in this flow (subsequent text is displayed below the table)
    2. ALIGN=LEFT, RIGHT, or CENTER in a nested table will align the table (relative to the table cell it is nested within). However, text flow will not be attempted - when nested tables are encountered, a paragraph break (a new line) is always added.
  • Empty tables, and empty rows, can be suppressed.

Alternatively, HTML_TXT can display tables (or highly nested tables) as nested lists.

IGNORE_WIDTH can be used to suppress use of WIDTH attributes, and to suppress auto-sizing of columns. TABLE_BORDER can be used to write a table border by default; it can also be used to override a no border (a BORDER=0) attribute NOSPAN can be used to suppress COLSPAN and ROWSPAN options. SUPPRESS_EMPTY_TABLE can be used to enable, or suppress, the display of tables rows. TABLEMODE, TABLEMODE2, and TABLEMAXNEST can be used to control when (if ever) to convert tables to lists. TABLEFILLER can be used to fill blank spaces in a table with something other then a space (say, with a white box). TD_ADD can be used to adjust minimum cell widths TABLEVERT and TABLEHORIZ can be used to specify characters to use when drawing horizontal and vertical borders. These are only used if high ascii characters are suppressed (using LINEART); otherwise, ascii line-art characters are used to draw table borders.


HTML_TXT displays FORM elements using several tricks, including:

  • FILE and TEXT boxes are displayed as a bracketed dotted line.
  • TEXTAREA boxes are displayed as a box surrounding default text.
  • RADIO and CHECKBOX boxes are displayed using special characters (by default, high-ascii boxes are used)
  • SELECT (and it's OPTIONS) are displayed as a bulleted list (with length controlled by the SIZE option of SELECT) - with special lines bracketing the top and bottom of the list.
  • SUBMIT and RESET are displayed as "quoted" strings.
  • RADIOBOX and RADIOBOXCHECK can be used to specify which characters to use as radio buttons
  • CHECKBOX and CHECKBOXCHECK can be used to specify which characters to use as checkbox boxes
  • SUBMITMARK1 and SUBMITMARK2 can be used to specify "quote" characters for SUBMIT and RESET
  • TEXTMARK1, TEXTMARK2, and TEXTMARK can be used to specify characters used to construct bracketed dotted lines.
  • SHOWALLOPTS can be used to suppress the SIZE attribute of SELECT lists (so as to force display of all OPTIONs).
  • FORM_BR is used to force a new line (a BR) after the end of a FORM
  • <CENTER>, <DIV>, and <P ALIGN=LEFT, CENTER, or RIGHT> alignment instructions are recognized
  • LINELEN can be used to specify the width of the text file (in characters). CHARWIDTH is used to map "pixels to character size" -- it is used when interpreting WIDTH attributes.
  • NO_WORDWRAP is used to suppress word wrapping in a paragraph. This yields an infinitely long line, which is suitable for reading by a word processor. NO_WORDWRAP is only applied to non-table lines, and to lines that are not CENTERed or RIGHT justified. In addition, indentations (at the beginning of these infinitely long lines) will be replaced with tabs (which can be converted to indent characters by your word processor).
  • TOOLONGWORD controls whether to trim, or wrap, words that won't fit into a line (or into a cell of a table).
  • LINEART controls whether to use high ascii characters to draw table borders, list bullets, and "quote characters". LINK_DISPLAY controls whether to create a "reference list" of URLs
  • SUPPRESS_BLANKLINES suppresses output of sequential blank lines.
  • DISPLAY_ERRORS controls the amount of error reporting (of HTML syntax)
  • HTML_TXT ignores embedded <SCRIPT>s and <APPLET>s

Changing Parameters

As noted in the customization column of the above table, HTML_TXT contains a number of user configurable parameters.

Although the default values of these parameters work well in most cases, you can change them by editing HTML_TXT.CMD with your favorite text editor (look for the "user configurable parameters" section)

Alternatively, you can temporarily changes values using the /VAR command line option. In fact, by specifying a PLIST=file.ext (in the /VAR section), you can create custom instructions for sets of HTML documents.

The following lists the more important parameters. Of particular interest are the NOANSI, LINEART, TABLEMAXNEST, TABLEMODE2 and TOOLONGWORD parameters.

General Controls
DOCAPS Captialization is used to indicate these "logical and physical" elements
DOULINE Spaces are replaced with underscores to indicate these elements
DOQUOTE "quotes" are used to indidate these elements.
DISPLAY_ERRORS Set level of error reporting (of html coding errors encountered)
FORM_BR If enabled a line BReak is added after the end of every FORM
HN_OUTLINE Create a hierarchical outline from <Hn> elements
IMGSTRING_MAX Controls how <IMG> labels are displayed. For example, you can display the ALT attribute, a [], a reference to a list (at the bottom of the document), or you can display nothing (so that the text document ignores all IMG elements)
IGNORE_WIDTH Ignore WIDTH option in <TD> elements (and/or suppress auto-sizing)
LINEART Suppress use of high ascii (non keyboard) characters.
LINK_DISPLAY controls whether or not URL information should be displayed (when displaying links). You can suppress display of URL info, display a number into a reference list (that will be written to the end of the text output file), or include the URL in the body of the text.
NOANSI Suppress use of ANSI screen controls.
SHOWALLOPTS display all OPTIONS in a SELECT list.
SUPPRESS_BLANKLINES Suppress display of consecutive blank lines
TOOLONG WORD trim long strings.

|- | Table Controls

Display of tables, in a tabular format, can be tricky. In particular, nested tables may tax the resources of your 80 character text display. HTML_TXT allows you to modify table specific display options, and convert tables into lists. |- |

SUPPRESS_EMPTY_TABLE suppress display of empty rows and empty tables
TABLEMODE Suppress "tabular" display of tables (use lists instead)
TABLEMODE2 Suppress tabular display of nested tables
TD_ADD Used to increase minimum cell widths (useful if narrow cells are clipping short words)
TABLEBORDER type of default table borders

|- | Display Controls

Since it's not possible to use italics, bold, font styles, and other such visual aids in a text file, HTML_TXT uses a few tricks instead.

  • Capitalization can be used - by default, Bold, STRONG and TypewriTer emphasis is indicated with capitalization.
  • Spaces can be replaced with underscores - this is used to indicate Underline emphasis
  • "quote strings" can be placed around emphasised strings.

The last trick, the use of "quote strings", is frequently used by HTML_TXT; with different sets of quote strings used for different emphasis. For example,

EM and I emphasis, anchors, submit fields, and < src="xxx" alt="in-line images"> in-line images  are indicated with unique sets of "quote strings".

|- |

Character used as a CHECKBOX button, and a selected CHECKBOX button
FLAGMENU bullets used in <MENU> lists.
FLAGUL bullets used in
character used to signify OPTION and a selected OPITON (in a SELECT list), respectively
characters to use when outlining <Hn> headings
HRBIG character used to make large
OL_NUMBERS Characters (i.e.; roman numerals, numbers, or letters) as bullets in
    (ordered lists)
Strings used before and after the doucment title
PREA and
characters used before and after <A> anchors
PREH1 and
characters used before and after


characters used before and after <Hn1> (n>1) headings
characters used before and after <IMGgt; names of in-line images
characters used to quote emphasize
Character used as a RADIO button, and a selected RADIO button
characters used before and after a <SUBMIT> and <RESET> field
characters to use on the left, right, and middle of a FILE and TEXT field.
characters to use as vertical, and horizontal, lines in tables (used only when lineart is suppressed)
TABLEFILLER character to used to fill empty spaces in tables and textbox's

|} For detailed descriptions of these parameters, see HTML_TXT.CMD.

Troubleshooting HTML_TXT

The following lists possible troubles you might have, and suggested solutions.

HTML_TXT display all kinds of wierd garbage (such as $ and [ characters)
You don't have ANSI support installed. You should either install ANSI.SYS (for example, include a DEVICE=C:\OS2\MDOS\ANSI.SYS in your OS/2 CONFIG.SYS file), or set NOANSI=1 (in HTML_TXT.CMD).
Nested tables aren't displaying properly (this is especially likely to happen when running under Regina REXX for DOS).
You can try using lists instead of tables -- set TABLEMAXNEST=0 (in HTML_TXT.CMD).
Tables have unappealing characters used as vertical and horizontal lines
Either your output device (say, your printer) does not support high-ascii characters, or your code page is somewhat unusual. You can use standard characters (- and !) for line borders by setting LINEART=0 (in HTML_TXT.CMD)..
Unappealing characters are being used as bullets and to "quote" text strings
This can also occur if your code page is somewhat unusual. You can either change the various "display control parameters" (in HTML_TXT.CMD), or you can set LINEART=-1; in which case some default, standard charactes (such as * and @ for bullets) will be used.
Long words (such as URLs) are being lost.
You can change the "trimming" action to "word wrap", or to "extend beyond margins", by setting the TOOLONGWORD parameter.
The display of headings is not informative
You can set HN_OUTLINE=2, heading will then be displayed in an "outline format". You can even change the numbering style (say, 2.a.ii versus II.2.b) by changing the HN_NUMBERS.n parameters.

Disclaimer and Contact Information


This is freeware that is to be used at your own risk - the author and any potentially affiliated institutions disclaim all responsibilties for any consequence arising from the use, misuse, or abuse of this software. You may use this, or subsets of this program, as you see fit, including for commercial purposes; so long as proper attribution is made, and so long as such use does not preclude others from making similar use of this code.

Contact Information

Do you have the latest version of HTML_TXT?

If you find errors in this program, would like to make suggestions, or otherwise wish to commment... please contact Daniel Hellerstein