PDF中的Birt导出不会自动换行

时间:2019-04-01 14:37:15

标签: pdf birt

我的报告预览正常。 但是现在,我需要导出到pdf ...,但是我遇到了一个问题:某些单元格的内容被截断为列的格式。

例如,1个单元格应该显示“ BASELINE” ...在预览中还可以...但是在pdf中,它显示“ BASEL”。

我整天都在寻找解决方案,但没有找到任何东西...

当然:由于内容是动态的,因此我不想使该列的宽度适合此单词“ BASELINE”的长度。 相反,我想固定列宽,然后该单元格应显示如下内容: 巴塞尔 INE

有什么想法吗?

预先感谢(有点绝望...)

2 个答案:

答案 0 :(得分:0)

您必须设置特殊的PDF发射器选项:

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

这是将BIRT集成到Java程序中的情况。 对于查看器servlet,也可以设置AFAIK这样的选项,但是我不知道如何设置。也许在URL上或使用环境变量。

答案 1 :(得分:0)

我有同样的问题。我发现了一个很好的话题:http://developer.actuate.com/community/forum/index.php?/topic/19827-how-do-i-use-word-wrap-in-report-design/?s=173b4ad992e47395e2c8b9070c2d3cce

这会将字符串拆分为所需的给定字符数:

要添加functions.js的函数(例如)。为了让您知道,我在报表项目中创建了一个文件夹:一个用于报表,一个用于模板,一个用于库,另一个用于资源,我在资源文件夹中添加了这个js文件。

/** 
* 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)); 
 } 

您将不得不在报告中添加此js文件:在属性->资源-> Javascript文件

enter image description here

这对我有用。

注意:如果只需要一次,则可以直接在数据中添加此功能...

此操作的缺点:您将必须指定字符的最大长度,如果您指定一个较小的数字来填充该列,则该列中可以有空格。 但是,这是我发现的最好方法。让我知道您是否找到其他东西并且它是否有效。