Jasper template遇到的问题

说明:写在pdf上面的,图片复制太麻烦了,不贴图了
  1. 关于文本内容溢出给定的范围后如何处理。

方法:使用iframe + Position Type: float

背景:虽然使用Stretch With Overflow,可以使所有内容都打印出来,但是会因为占用了额外的非指定位置,导致其他元素被覆盖。这是因为默认用的使Position Type: Fix relative to top/bottom

说明:类似于JavaScriptdiv布局,只不过这里用jasperiframe

根据前端画页面的经验,先将模板分块,每一块都是一个iframe,给iframe设置为float即可,那么iframe里面的元素超出指定大小后会将iframe撑大,但是因为所有同级的iframe都设置了float,所以会有序排列。

 

  1. 如何根据兄弟元素对齐高度

背景:例如List,或者一个iframe的两个iframe如何根据其中一个iframe的高度也同时拉升自己的高度。

给所有的兄弟元素,包括自己,设置Stretch Type: Relative To Tallest Object(过时)

问题1的中线就是用的这个配置。

 

  1. 如何将List由下面这种情况修改为第二种情况。

List元素的advance里面,将print Order由默认的垂直改为水平

 

 

  1. 如果打印出page currentPage of countPage

Japser有这个Composite Elements的,就是用pageNumber这个变量,只不过执行时间currentPage设置为nowcountPage设置为report

  1. 如何解决虽然excel等可以正常打印中文,但是pdf就不行呢?

原理不太清楚,网上找的一种方法是:给当前的项目加上特定的字体的ttf文件,需要resources目录下定义proproties和xml以及ttf字体文件,并且jasper只用这种字体即可。

 

 

 

其他

  1. 为什么我不可以用table布局。

……虽然table可以自适应文本高度的,完美解决上方的问题1,但是它不能用来的布局的。要把table看作接收dynamic datalist,而不是前端的table布局。

 

注意点

  1. Edit Page Format可以设置纸张大小从而方便打印机打印。如果用A4纸,一个page使842的高度,但是我所有的内容还没有填充完就把height用完了怎么办?多加几个detail元素,拖动detail的高度就可以使templateheight变高。
  2. Edit Page Format没有特殊情况,一般都指定Print Order :Vertial
  3. 新建一个report,默认的元素,诸如headerpage headerdetailpage footer都是按照docx来的,比如元素定义在page header中,那么每次分页都会重新打印一次。

posted on 2022-11-09 20:57  我欲皆真  阅读(82)  评论(0编辑  收藏  举报

导航