问题
最近的项目要使用itextpdf 7 生成pdf,其中在设置text文本绝对位置(absolute position)的时候,发现itextpdf 7很好的增加了paragraph直接设置position的方法:.setFixedPosition()。可惜这个这个method的参数只能通过左下角坐标设置,这个对常规文本框位置很不友好,容易在长文本换行换行时导致排版出问题。理想的情况是像ppt一样通过文本框的左上角来设置。
解决
将method的纵向坐标设为0,通过设置paragraph文本框的高度(.setHeight())和对齐方式(.setVerticalAlignment)来设置左上角位置。当然,要保证paragraph的高度需要足够容纳文本。
Demo
Paragraph para = new Paragraph("Hello world!");
float textBoxWidth = 500f;
para.setHeight(1000f);
para.setFixedPosition(50f, 0f, textBoxWidth);
para.setVerticalAlignment(VerticalAlignment.TOP);