聽起來好像你只是缺少一塊難題來滿足你的要求。那件被稱爲getYLine()
。
請看看DrawRectangleAroundText的例子。本例將兩次繪製同一段落。第一次,它增加了一個矩形,可能看起來像你已有的解決方案。第二次,它增加了一個矩形,您希望它看起來方式:
第一次,我們添加文字是這樣的:
ColumnText ct = new ColumnText(cb);
ct.setSimpleColumn(120f, 500f, 250f, 780f);
Paragraph p = new Paragraph("This is a long paragraph that doesn't"
+ "fit the width we defined for the simple column of the"
+ "ColumnText object, so it will be distributed over several"
+ "lines (and we don't know in advance how many).");
ct.addElement(p);
ct.go();
您定義使用的座標色譜柱:
llx = 120;
lly = 500;
urx = 250;
ury = 780;
這與左下角(120,500),130的寬度和380的高度的矩形。因此繪製矩形這樣的:
cb.rectangle(120, 500, 130, 280);
cb.stroke();
不幸的是,那個矩形太大了。
現在,讓我們再一次添加文本在略微不同的座標:
ct = new ColumnText(cb);
ct.setSimpleColumn(300f, 500f, 430f, 780f);
ct.addElement(p);
ct.go();
而不是使用(300,500)爲矩形左下角,我們要求使用其當前Y位置的ct
對象該getYLine()
方法:
float endPos = ct.getYLine() - 5;
正如你所看到的,我減去5個用戶單位,否則我的矩形的底線將與文本的最後一行的基線一致,看起來不很漂亮。現在,我可以使用endPos
值繪製矩形我這樣的:
cb.rectangle(300, endPos, 130, 780 - endPos);
cb.stroke();
請澄清:當你說多行文本,你在說什麼(1)多行文本字段(表單),(2。 )在絕對位置添加了'ColumnText'文本,或者(3.)用'document.add()'添加了'Paragraph'的文本? – 2015-03-13 17:18:02
ColumnText ct = new ColumnText(cb); 短語短語=新短語(「某些字符串\ n其他字符串等... \ n測試」); ct.setSimpleColumn(myText ......); ct.addElement(詞組); ct.go();這是我繪製字符串的方式。 – user2439522 2015-03-13 17:44:36
好的,謝謝!首先我會更新你的問題。如果我有時間,我會給你一個代碼示例。 – 2015-03-13 17:51:16