This page is a list of ideas from myself and other folk. For the more 'official' roadmap, see the Development Plans page.
Flowing Between Bounding Boxes.
It would be nice to enable smooth flowing from one bounding box to another. Paul Novak suggests building an object which would feed some text to each bounding box, allowing them to consume however much text they can fit and then pass the rest on to the next box.
Eager Rendering
James Gray suggests that Prawn should output rendered PDF objects as early as possible, so as not to leave objects laying around that won't be reused, and keep the memory footprint low. This will require some special consideration for pages but other ref() calls might be easy to convert to direct rendering calls.
Object Composition model
Michael Daines is looking to possibly separate PDF generation from the PDF object model. Essentially, this would allow you to do things like deal with Text objects directly. The motivation behind this is to make things highly abstract and make it easy for custom layout APIs to be mapped directly on top of Prawns primitives. Though this idea may show promise, my general opinion is that Prawn should stay simple and limit the amount of objects it uses. We'll see how this changes as development proceeds.
Encoding Issues
Even though we're heading towards using Type0 fonts with Identity-H encoding for strings in content streams, strings outside content streams (like those in the Info Dictionary, any bookmarks, annotations, etc) must be in PDFDocEncoding or UTF-16. UTF-16 is preferable from a i18n point of view, so I think we should use that.
They can still be in the <XX> format, so the basic Ruby string -> PDF String conversion is the same, it will just need some pre-processing to ensure it's in UTF-16.
"\xFE\xFF" + some_string.unpack("U").pack("n")
Hyperlinks
Steve Rogers suggests supporting links in documents. I'd need to look over the spec for how to support this.
Font Subsets
James Healy suggests supporting subsetting of TTF fonts (section 5.5.3 of the spec) to keep file sizes down.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
Prawn is a fast and nimble PDF generator written in pure Ruby. You can find the code on Github: http://github.com/sandal/prawn
When you file a ticket, please tag bug reports with 'defect' and feature requests with 'request'. Please do not attach patches to tickets, instead submit them by sending a pull request on Github.
Please use the mailing list for discussion, and Github for patching. The bug tracker is well... a bug tracker. If you've got rough ideas for things you'd like to see or encounter a problem that you aren't sure is a bug, use the mailing list before filing a ticket.
