Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • I've done a lot of work generating RTF with DSSSL. This is not a path you want to follow. The output is generally good enough for many uses, but does not reach into the more complex formatting you are looking to achieve.

    First of all, if you're talking DSSSL, you're talking OpenJade, which is a large package, somewhat difficult to build, and very difficult to troubleshoot unless you have some background in SGML arcana, or wish to acquire it. It's like expending the effort to master Victorian era metallurgy -- wonderful if you want to maintain an old engine, but not the best path to pursue if your goal is to ship cargo today.

    Second, the RTF "specification" gets updated about once per release of MSWord. We're up to 1.7 right now. If I had to guess, the RTF backend for OpenJade was done in the era of RTF 1.4 or earlier. So whatever new features got added into RTF since the backend was updated simply cannot be generated from a DSSSL toolchain. I don't know what these features would be, so this is possibly just FUD.

    Third, the RTF output that OpenJade generates is a small (but useful) subset of whatever level of RTF it implemented. Plus, there are complications between different interpretations of what a page model should be. For example, I think that DSSSL can handle nested tables, but RTF (or the RTF backend) cannot generate them properly.

    And there are many RTF features that are not accessible from the DSSSL side of the fence -- things like annotating a block of text as an RTF style. In the DSSSL world, styles are resolved as the page goes into the back end. So if you have a style called "Heading 1" that renders as 36pt Helvetica, the output is specified as 36pt Helvetica, not symbolically as "the style named 'Heading 1'".


    So while an RTF generator may be useful, DSSSL isn't the best tool for the job. I'd look at RTF::Writer [], which can touch the entire (modern) RTF spec, or be made to do so much more easily. And you don't need to learn/use Scheme to get there. ;-)