Html2txt

From unkrig.de
Jump to navigation Jump to search

A tool to convert HTML documents into plain text.

For example this HTML code

is rendered like this:

For a complete description of the supported HTML inline elements, see here.

For a complete description of the supported HTML block elements, see here.

Motivation

The goal was to generate the "usage" page that a command line tool usually prints when you invoke it with a "-help" or "--help" option, rather than maintain it manually (e.g. in the form of "println()" statements in the code).

The chosen solution is to put a big DOC comment before the "main()" method, generate an HTML page with JAVADOC, convert that into a plain text file, put it into the application's JAR file and copy its contents to STDOUT when the user want to see it.

The command line version of html2txt itself uses that technique, and you can see the results above.

Download

You can download the latest version of the runnable JAR file here.

Limitations

Since the tool uses the JRE's built-in XML parser, it supports "numeric character references" (like "ü" for "Ü"), but not "named HTML character entity references" (like "Ü" for "Ü").

For the same reason, the HTML markup in the DOC comments must be "well-formed", i.e. all start tags must be matched by an end tag (like "<li>...</li>"), and void tags must end with a slash, like "<br />".

Usage

Command line tool

see here.

ANT task

see here.

Library

see the JAVADOC.

Source Code

see the source code repository.

Change Log

Version 1.0.3, 2018-10-29
  • Added vertical alignment (e.g. "<div align='justify'>").
  • Made the tests robust against the platform-dependent line separators.
  • Cleaned up the MAINDOC generation.
Version 1.0.2, 2016-11-25
  • Modified the text of the copyright notice slightly: Replaced "author" with "copyright holders and contributors".
Version 1.0.1, 2016-11-07
  • Resurrected Java 6 compatibility.

License

html2txt is published under the "New BSD License".

Contact

If you have issues, don't hesitate to submit a ticket.

To discuss in public, check the forum and/or subscribe to it (envelope icon).