I’m a newbie to prawn, but enjoying using it. The API is very nicely
conceived …
I’m generating a multi-column doc from the content of an xml file. The
doc looks good at this point, but I’m trying to improve one part of the
coding. I’m currently doing this …
- Read one tag value at a time from the xml file, and create a hash with
the text and styling, and add that to a text array. - For each page and for each column within the page, call
formatted_text_box with the text array, and catch the return (overflow)
in the same array.
I’m testing with xml files that generate about 5-10 pages, but I’m
concerned that if I get a 1000-page xml file, I’ll use huge amounts of
memory in generating the text array. What I’d like to do is something
more like …
- For each page and for each column, read an xml tag value, call
formatted_text_box, and terminate the column when formatted_text_box
returns an overflow.
In multiple calls, each call starts over at the top of the bounding box,
superimposing all entries in the bounding_box. Is there an optional arg
somewhere that will position the text for the call at the last cursor
position in the bounding box?
I could do create a new (blind) BoundingBox and use that, gradually
adding more and more entries to the text array until it did overflow,
then use that array on a non-blind box in the document, then start the
next column with the overflow. Determining the amount of text for each
column is O(N^^2), which could get pretty slow with a small font.
Or I could determine the minimum number of characters I’d need in the
array by determining once how many minimum-size chars (sans-serif “i”?)
would fit in the bounding box, then read at least that many characters
from the xml file, but that approach seems inelegant.
Thanks in advance for any tips …