【问题标题】:Problem with line breaks in PDF document generated by BIRTBIRT生成的PDF文档中的换行问题
【发布时间】:2021-08-30 07:41:31
【问题描述】:

我的 BIRT 报告中有一些单元格文本没有像我希望的那样流畅。

例如,

文字是Long value resultwithaverylongname whichcannotbreak,我曾希望它会这样显示:

Long value 
resultwithaverylongname 
whichcannotbreak

渲染选项如下:

renderOptions.setOutputFormat(IPDFRenderOption.OUTPUT_FORMAT_PDF);
renderOptions.setOption(IPDFRenderOption.PAGE_OVERFLOW, IPDFRenderOption.OUTPUT_TO_MULTIPLE_PAGES);
renderOptions.setOption(IPDFRenderOption.PDF_TEXT_WRAPPING, true);
renderOptions.setOption(IPDFRenderOption.PDF_WORDBREAK, true);

在我看来,我想要的输出在物理上是可能的,但我不知道为什么 BIRT 不会在空格处中断并在单词中间中断。

我正在使用 BIRT 4.16(来自 Sourceforge)。文本包含普通空格(没有不可破坏的空格)并通过data 对象显示。

3.Sep.21

我现在有一个示例项目,我正在尝试提交到 Github。与此同时,这里有一个截图,显示了看起来不错的休息时间和其他不好看的休息时间......

git repo 在这里:https://github.com/pramsden/test.wordbreak

【问题讨论】:

    标签: pdf birt


    【解决方案1】:

    如果文本“resultwithaverylongname”在物理上适合,那么您是对的: BIRT 不应该在单词中间打断它。 您的 renderOptions 似乎正确(取决于您使用的 BIRT 版本)。

    乍一看,这看起来像是一个错误。

    但是:在德语中,我们经常有很长的单词,我用 BIRT 创建了很多(复杂的)PDF 报告,但我从未见过这个问题。 所以我想这是一个很小的愚蠢的细节导致了这个。

    只是为了仔细检查:

    “Long”、“value”、“result...”之间的空格是正常空格(0x20)吗?还是不间断的空格?

    您使用的是哪个 BIRT 版本?

    您使用的是数据项还是动态文本项,如果是,是 HTML 还是纯文本?

    您能否创建一个可重现的简单测试用例并将 rptdesign 文件发布到某处?

    【讨论】:

    【解决方案2】:

    我不使用 BIRT,但尝试使用 (\n), 就我而言,我使用PDFFlow library 来生成pdf 文档,并进行换行我只使用\n

    这是一个简单的示例代码,用于创建 pdf 文件并使用换行符

    var DocumentBuilder.New()  
      .AddSection()  
        .AddParagraphToSection("Hello world! \n go to the next line")
    .ToDocument()  
       .Build("Result.PDF");
    

    试一试,告诉我它是否有效

    【讨论】:

    • 感谢您的回复。我不知道会出现什么文本,所以添加 \n 不是一个选项,也不适合这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多