sweet33bdx
sweet33bdx

Reputation: 11

Birt export in pdf does not wordwrap long lines

My reports preview is ok. But now, I need to export to pdf...and I've got an issue : the content of some cells are truncated to the witdh of the column.

For instance, 1 cell should display "BASELINE"...in the preview it's ok...but in pdf, it displays "BASEL".

I've been looking for a solution the whole day and did not find anything...

Of course : I don't want to fit the width of the column on the length of this word "BASELINE" because the content is dynamic... Instead, I want to fix the column width and then, the cell should display something like that : BASEL INE

Any idea ?

Thanks in advance (am a little bit desperated...)

Upvotes: 1

Views: 1053

Answers (3)

Doug H
Doug H

Reputation: 11

The solution is trivial in BIRT v4.9 if you've integrated the engine into your java code. Just set the PDF rendering options.

RenderOption options = new PDFRenderOption();
options.setOutputStream(out);
options.setOutputFormat("pdf");         
options.setOption(PDFRenderOption.PDF_WORDBREAK, true);
options.setOption(PDFRenderOption.PDF_TEXT_WRAPPING,  true);

task.setRenderOption(options);

Upvotes: 1

Eloise
Eloise

Reputation: 539

I had the same issue. I found a very good topic about that : http://developer.actuate.com/community/forum/index.php?/topic/19827-how-do-i-use-word-wrap-in-report-design/?s=173b4ad992e47395e2c8b9070c2d3cce

This will split the string in the given number of character you want :

The function to add in a functions.js (for example). To let you know, I create some folder in my report project : one for the reports, one for the template, one for the libraries, another for the resources, I added this js file in the resources folder.

/** 
* Format a long String to be smaller and be entirely showed
*
*@param longStr 
*             the String to split
*@param width
*               the character number that the string should be 
*
*@returns the string splited
*/
function wrap(longStr,width){ 
    length = longStr.length; 
    if(length <= width) 
        return longStr; 
    return (longStr.substring(0, width) + "\n" + wrap(longStr.substring(width, length), width)); 
 } 

You will have to add this js file in the reports : in the properties -> Resources -> Javascript files

enter image description here

This is working for me.

Note: you can add this function in your data directly if you need only once...

The disadvantage of this : you will have to specify a max length for your character, you can have blank spaces in the column if you specify a number to small to fill the column. But, this is the best way I found. Let me know if you find something else and if it's working.

Upvotes: 0

hvb
hvb

Reputation: 2669

You have to set a special PDF emitter option:

PDFRenderOption options = new PDFRenderOption();
options.setOption(PDFRenderOption.PDF_HYPHENATION, true);

This is if you integrated BIRT into your Java program. For the viewer servlet, it is possible to set such options, too, AFAIK, but I don't know how; maybe on the URL or using environment variables.

Upvotes: 0

Related Questions