Hi all, I'm not as active as most of you, maybe I'm too new too dev-list, just learning the way to post and that stuff. I don't pretend to merchandise anything here, just giving clues hoping they are usefull ;)


Yes, I agree, going the route of FOP, or something similar, certainly implies a more generic name than PDFResult.

Generic names will be nice, and I think a good aproach will be to have input parameters and outputstream (as well as response headers) ready for a PDF application. Maybe the GenericPDF action can have a setFileName(response) method, a setLength(long size) method and recive (or hold) the PDF parameter map inside, as well as exposing in an easy way the outputstream to write our PDF to people. I'll be nice to have the response reset at action start, and all the headers stuff (application/pdf) already setup, as well as some kind of configuration flag to establish the disposition header (attachment / inline).


Writing FO can be kind of tedious, while IText has an API that is pretty well suited to just flowing text in if you have simple needs. I haven't used either exhaustively -- my day job is a LOT about generating PDFs but ours need much finer design control than either of those APIs really support.

I've been fighting both fo and iText. Fo is tedious, as well as raw iText is. My choice goes to JasperReports + iReports.


I hear you... I've done probably 7-10 different methods to generate PDFs over the years... I was hoping to do something simple and generic enough to cover the 80 in the 80-20 rule :)

It seems like design of a generalized (custom) XML format for describing PDF templates for iText is a pretty big chunk of responsibility which doesn't really belong at Struts. It seems like something that should be done in cooperation with the iText team for eventual integration to their project, or if not, to be served independently.


That's definitely a fair point. There is actually a project outside iText that provides an XML format already, although for the purposes of what I'm talking about it's license isn't amenable (LGPL, which I recall being not acceptable to the ASF). I'll tell you though, I wish I had seen that before I wrote my own :)

JasperReports (http://jasperreports.sourceforge.net) is an xml schema for iText, in a similar (but I think far more extensive and complex than yours). It handles XML files, turns them into iText code and the you pass a DataSource interface to fill the fields in. The good news are jasperreports has a crystal-report-style visual editor. Jasper has been out ther for a long time and they haven't get iText support (well, they haven't merged iText). It's license is LGPL. I just tell this because maybe you (Frank) should think about moving to JasperReports before your XML schema grows too big. Feel free to mail me asking questions, I've been developing with Jasper (and hacking it as well) for over two years.


Is there any problem with iText's license? (dual LGPL/MPL)? May be worth a look at PDFBox, which is BSD licensed: http://pdfbox.org/


Yeah, I think your right about that too. PDFBox looks interesting... although I'm not sure I want to build against something that hasn't had a 1.0 release yet (hehe, JWP excepted of course!! LOL)

But good ones :) The license issue with iText alone is a good one... that starts to push me towards FOP more than likely, which might ultimately be better since it'd allow for more than just PDF output. Like I said, I'll have to do some playing with that to convince myself it won't be a burden to work with.

Personally I think the main goal will be made things easy for us, real life programmers. It's a fact that some use FOP but it's a fact that others don't. The goal then turns out for using FOP, as it turns out for using iText. I think the aproach *SHOULD* be an easy way to integrate any kind of PDF generation in a plugable / extensive way. Once you've a base PDF action (how many times I've had mine!), that is, as I mentioned before, response headers, filename, length (if any) and disposition -to cache or not to cache is out of this scoope, already covered by the framework- as well as input parameters -covered by the framework- and a easy/lazy access to outputstream, things should be easily extensible, for example:

- Frank can extend and just pass an adittional parameters, XMLtemplate, fill in the gas Xps and had hiMLTemplatedPDFResult in few lines of code, ready to use and bug free (as in beer?). - Joe, in the other side, will write a FOResult with whatever foo needs (template and base document) a new result ready.
- I can write a jasperreports one, with new magic functionality ready.

What's the point? We three donate our work to the project and soon, the project will be filled with those 70 or-even-more ways of generating PDFs. Ok, maybe this will turn in a Commons-PDFing (j/k like commons-logging) abstract PDF API but well, giving support for a standard way, extensible via plugins will make things easy. Anyone can extend to support his own PDF thing, but much better, PDF generating frameworks will have an easy way to offer the plugin/result object/action/thing in it's own library. What can be better than download iText, put a config parameter and have a iText PDF action ready coding no lines? And what about doing the same with jasper or FO?

Cheers,

Juan

PD: Please forgive my english since It's been a long time since I last wrote an extense aggregation of thoughs into an email.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to