ina*_*lus 9 jasper-reports ireport dynamic-jasper
我的jasper报告中出现了字体问题,其中一个较为冗长的文本字段(细节带中的最后一个)在PDF和PDF预览中被截断,而在内部预览中则没有.
例如
内部预览:
Here is a fake description. It fits
perfectly, fitting just in the lines.
Run Code Online (Sandbox Code Playgroud)
PDF预览
Here is a fake description. It
fits perfectly, fitting just in the
Run Code Online (Sandbox Code Playgroud)
贾斯珀(貌似)使用一些算法来确定该字段应该有多高,我的文本几乎不合适,然后当生成PDF时,文本包裹并消失在下一行.
我没有使用自定义字体(只是默认/隐式"SansSerif"),并且没有使用除粗体/斜体之外的任何自定义样式.在iReport的PDF预览版和我在Windows和MacOS上生成的代码中都可以证明这种行为(Linux可能仍有问题,但我的示例文本没有在Ubuntu上展示行为).
我玩Stretch Type,Position Type和Stretch with Overflow,以及将此文本字段移动到自己的乐队但没有修复此错误(其中一些导致其他错误).
我很幸运将字体更改为其他内置字体,但这只是告诉我我的示例不适用于该特定字体,而不是我已修复该错误.
任何提示将非常感谢.
更新1
我尝试从Jasper Reports 5.2.0升级到6.2.0,将Jasper Fonts 4.0.0升级到6.0.0 ......没有变化.
更新2
尝试编辑我的src/main/resources/jasperreports_extension.properties并添加
net.sf.jasperreports.export.pdf.force.linebreak.policy=true
Run Code Online (Sandbox Code Playgroud)
... 没变.
(值得注意的是,虽然在我的用例中我无法使用isStretchWithOverflow="true",但这可能就是它无效的原因.)
更新3
我尝试通过编辑src/main/resources/jasperreports_extension.xml和添加来嵌入字体:
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.arialFontFamily=fonts/customFontFamilies.xml
Run Code Online (Sandbox Code Playgroud)
customFontFamilies.xml:
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="ArialEM">
<normal><![CDATA[fonts/Arial/Arial.ttf]]></normal>
<bold><![CDATA[fonts/Arial/Arial Bold.ttf]]></bold>
<italic><![CDATA[fonts/Arial/Arial Italic.ttf]]></italic>
<boldItalic><![CDATA[fonts/Arial/Arial Bold Italic.ttf]]>/boldItalic>
<pdfEncoding><![CDATA[Cp1252]]></pdfEncoding>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
</fontFamilies>
Run Code Online (Sandbox Code Playgroud)
... 没有骰子.(虽然这确实有助于Firefox的PDF渲染器不会渲染粗体字体的问题.)
更新4
我注意到在所有测试用例中我都能够创建第一行是空白的,所以我将特定的单元格更改为垂直对齐顶部,这样可以工作,但当然没有一个单元格不对齐里面有很多文字.
作为解决方案废弃,但可能适合某人.
更新5
在这一点上,希望很明显我已经尝试了"真正的"解决方案并且看着他们都死于可怕的死亡.因此,我们进入了黑客解决方案的领域.首先我尝试了@ wmmci的解决方案,但他的回答改变了我的盒子的高度(由于它是由动态计算的Dynamic Jasper).我注意到我可以创建的所有示例都涉及字符串中的字内句点,例如"foo ... bar".这可能不是你的情况,但它适合我.所以我 在字内空格后注入了"头发空间"().
这显然不是一个真正的解决方案,只是一个临时的解决方案,直到我能够找到更多的错误示例.
更新6
我查了一下,我没有@KarolisŠarapnickis的问题printOrder.呃,好吧.我会继续战斗.;-)
| 归档时间: |
|
| 查看次数: |
10470 次 |
| 最近记录: |