PublishContrib
Generates a static view of a web, as HTML files on disc, or as a PDF, or as a zip or tgz archive file.
Previously known as GenHTMLAddOn, and then PublishAddOn, this is the original publishing extension for TWiki.
WARNING: TWiki-4 only. If you want to use this extension with an earlier version of TWiki, please see here
When TWiki generates a view, it does so dynamically i.e. there's a CGI script that runs, processes some files, and generates HTML that is displayed by the browser. There are circumstances in which this may not be desirable or even possible. For example:
- TWiki is used to create documentation which has to be bundled into a product release,
- Published versions of TWiki pages must be read-only,
- The TWiki server is inaccessible to the audience (e.g. on the other side of a corporate firewall).
PublishContrib provides support for the generation of stand-alone HTML from a TWiki web. It will generate fully rendered versions of a set of TWiki pages together with any attached files.
Features
- All standard TWiki tags are interpreted
- Plugins are called
- Unresolved Links? to non-existant topics are silently ignored
- Topic links internal to the TWiki are translated to relative links
- Powerful support for choosing what content gets published
- Any links to the 'pub' areas of topics in the web are automatically resolved and the referenced files copied.
- Any links to images outside the TWiki are resolved, and the image is stored in the output (requires LWP).
- Output in HTML or PDF. HTML can be compressed.
- Full support for hierarchical webs
- Multiple instances (e.g. dev, test, prod) can be specified
- Templates (such as viewprint) can also be generated, and the links are fixed up appropritately
Usage
The easiest way to publish a web is from this topic, by filling in the following form.
The output is generated in a directory designated during installation. The progress messages printed during documentation generation tell you exactly where the output is.
You can also create a permanent topic in a web to help with the publishing process. See
below.
Wildcard Patterns
Wildcard patterns are well known to people who are used to command lines on computers, but may be unfamiliar to the Windows generation. A wildcard is a special string that you can put into a filename so that it matches a whole range of files:
| String | What it does | Example | What the example matches |
| * | Matches any string, including an empty string. | *Cheese* | Every topic with "Cheese" somewhere in the name (but not "cheese") |
| ? | Matches any single character. | Example1? | Example10 and Example 1X but not example1 |
| [...] | Matches any one of the enclosed characters. A pair of characters separated by a hyphen denotes a range expression; any character that sorts between those two characters, inclusive, using the current locale's collating sequence and character set, is matched. If the first character following the [ is a ^ then any character not enclosed is matched. A - may be matched by including it as the first or last character in the set. A ] may be matched by including it as the first character in the set. Within [ and ], character classes can be specified using the syntax [:class:], where class is one of the following classes defined in the POSIX.2 standard: alnum, alpha, ascii, blank, cntrl, digit, graph, lower, print, punct, space, upper, word, xdigit. A character class matches any character belonging to that class. The word character class matches letters, digits, and the character _. | B[aeiou]g | Bag, Bog, Big, Beg, Bug |
Regular Expressions
A perl regular expression. You can use a simple string here, which will be matched exactly, or you can read up on perl regular expressions on the web.
Using a Publish Topic
You can create a publish topic in a web that contains all the details needed to publish that web. This is just a topic with a series of standard TWiki variable settings in it. You can use the
Publish Web topic in this web as a template for your own topics.
Alternatively you can just take a copy of the form in this topic, paste it into your own topic, and change the defaults.
Publishing from the command line
TWiki-4 allows you to call any TWiki script from the command line, and the
publish script is no exception. Just
cd to the
bin directory, and
perl publish. Parameters are passed as name=value pairs, for example:
perl publish web=Book exclusions='Web*' format=file
perl publish web=Book inclusions=WebBook format=pdf genopt='--book --duplex --toclevels=5'
The available parameter names are shown in the example above, in the 'Name' column.
Controlling which parts of a topic get published
You can control what gets published from a topic using
%STARTPUBLISH% and
%STOPPUBLISH% control tags:
- If
%STARTPUBLISH% is the first control tag seen in the file, everything before it will be ignored.
- Everything between
%STOPPUBLISH% and the next %STARTPUBLISH% (or the end of the topic) will be ignored.
-
%STARTPUBLISH% and %STOPPUBLISH% will be visible in the viewed topic, so you can easily see what will be published from the topic.
Note: the old <nopublish> tag is deprecated and should be replaced in topics
Another good trick is to set up a special "publishing" web. Create topics in the web that %INCLUDE the topics from
other webs that you want to publish. You can use
STARTSECTION and
ENDSECTION to highlight what you want published. This way the "publishing" web gives you a view of exactly what will be in the published output, without the need for special publishing tags.
Settings
- Name of the perl package
- Short description
- Set SHORTDESCRIPTION = Generate static HTML for a TWiki Web
Known problems
- Doesn't handle revision info tags in templates
- Plugin tags that create complex HTML (sug as T Wiki Draw? DRAWING tags) are not handled correctly.
- Links to excluded topics still get generated as links
Installation Instructions
Dependencies
Note: If you want to generate PDF files, you will need an installation of
htmldoc.
htmldoc is available from
http://www.easysw.com/htmldoc/ for free, but you are
strongly recommended to buy the commercial version. Your support for OSS projects helps make OSS possible.
- Download and unpack the archive in your twiki installation directory. Contents:
%$MANIFEST%
-
perl PublishContrib_installer.pl install to automatically check and install other TWiki modules that this module depends on, and configure the plugin. This script also includes an uninstall option should you ever wish to remove the plugin from your installation, and an upgrade option that will automatically download and install the latest version of the add-on.
- If the install script fails for any reason, you may need to define the configuration yourself. Edit
LocalSite.cfg and add the following lines:
$TWiki::cfg{PublishContrib}{Dir} = "dir_path";
$TWiki::cfg{PublishContrib}{URL} = "url_path";
Where
dir_path is the file system path to your publish directory on the server, and
url_path is the URL of the same directory.
Additional install steps
PDF output
- install htmldoc from http://www.easysw.com/htmldoc/
- Add the following line to
LocalSite.cfg
$TWiki::cfg{PublishContrib}{PDFCmd} = 'htmldoc --webpage --links --linkstyle plain --outfile %FILE|F% %EXTRAS|U% %FILES|F%';
Note that
htmldoc can also be used to generate PostScript by using the
-t option in the
Generator Options field above. See the
htmldoc man pages for details.
.tgz (tar) output
- Install Archive::Tar and everything it depends on
.zip output
- Install Archive::Zip and everything it depends on
Info
This add-on started as the
TWiki:Plugins/GenHTMLAddon, written by
TWiki:Main/CrawfordCurrie at Motorola. It was then rewritten by
TWiki:Main/EricScouten, and then fixed and enhanced by
TWiki:Main/CrawfordCurrie (
http://c-dot.co.uk)
| Authors: | TWiki:Main/CrawfordCurrie, TWiki:Main/EricScouten |
| Dependencies: | %$DEPENDENCIES% |
| Version: | %$VERSION% |
| Change History: | |
| 10412 | Correction to the correction for anchors. |
| 10345 | Correction to support anchors in UR Ls properly |
| 10242 | Martin Cleaver - changes to allow generation of viewprint and viewxxx when specified by TEMPLATE; multiple INSTANCE (dev/test/prod); (Bugs:Item2269) |
| 10063 | Bugfix Bugs:Item2216 |
| 10006 | Crawford Currie - fixed problem where it was failing to remove <base> tags completely (Bugs:Item2200) |
| 9986 | Crawford Currie - added doc on usage from command line, corrected sense of topicsearch filter (Bugs:Item2120, Bugs:Item2121), renamed parameters (old ones are still valid), corrected handling of empty web refs (Bugs:Item2128), deprecated nopublish html-style tag in favour of PublishWebPlugin-compatible style (though with richer semantics) (Bugs:Item2196) |
| 9823 | Crawford Currie - added support for hierarchical webs, and inclusion of external images. |
| 9773 | Crawford Currie - added tgz and pdf support |
| 9725 | Michael Daum - fixed rewriting urls; fixed nested resources issue; creating a new prefs object for each topic |
| 9713 | Corrected form action so it uses up the right web preferences |
| 9695 | Michael Daum - recursively archive resources imported by css files; fixed several html errors in the PublishContrib and PublishWeb topics; removed hardcoded reference to print.pattern |
| 8959 | TWiki-4 version. Also supports publishing to a file area, making TWiki easier to use as a CMS (see also TWiki:Plugins/PublishWebPlugin, which does almost the same thing ) |
| 6276 | Item196 bugfix for HTTP_HOST, as described in the Dev topic for the contrib |
| 5566 | Changed interface to support wildcards, and lightened the plugin by replacing a lot of files with simpler ways of doing things. |
| 5499 | Added Compress::Zlib dependency, as requested by Brad Taylor |
| 27 Apr 2005 | 1.301 Crawford Currie - fixed minor issues highlighted by Bruce Dillahunty and Scott Claridge |
| 11 Apr 2005 | 1.3 Crawford Currie - reworked the interface and code to work better |
| 13 October 2004 | 1.200 Crawford Currie - Cairo compatible |
| 7 Jan 2003 | 1.1 Initial version |
| Home: | TWiki:Plugins/PublishContrib |
| Feedback: | TWiki:Plugins/PublishContribDev |
| Appraisal: | http://TWiki.org/cgi-bin/view/Plugins/PublishContribAppraisal |
Related Topics: T Wiki Preferences,
T Wiki Plugins
Copyright
This code is a development of the Architectures and System Platforms group of Motorola Inc. and is protected by the following copyrights:
The 2005 functionality improvements were sponsored by
Wind River Systems
The
pdf and
tgz output formats were made possible by
Sabio Labs
License
As required for the publication of all extensions to TWiki, the software is published under the terms of the GNU General Public License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details, published at
http://www.gnu.org/copyleft/gpl.html