如文獻所述,在VerticalText
的上下文中,左對齊,中對齊和右對齊具有不同的含義。左邊是頂部,中間是中部,右邊是底部。
隨着類VerticalText
,你總是寫從右到左。目前沒有辦法將文本對齊,如右側的屏幕截圖所示。
但是,您可以通過首先在模擬模式中添加垂直文本,然後計算已寫入的行數來解決此問題。
請參閱我的書中的VerticalText1示例。我已經適應該實施例的這樣的代碼:
BaseFont bf = BaseFont.createFont(
"KozMinPro-Regular", "UniJIS-UCS2-V", BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 20);
VerticalText vt = new VerticalText(writer.getDirectContent());
vt.setVerticalLayout(390, 570, 540, 12, 30);
vt.addText(new Chunk(MOVIE, font));
vt.go();
System.out.println(vt.getMaxLines());
vt.addText(new Phrase(TEXT1, font));
vt.go();
System.out.println(vt.getMaxLines());
vt.setAlignment(Element.ALIGN_RIGHT);
vt.addText(new Phrase(TEXT2, font));
vt.go();
System.out.println(vt.getMaxLines());
的System.out
呼叫的輸出是:
11
4
1
這些數字是各自go()
後可用的行數。
我們從setVerticalLayout()
方法中定義的12行開始。 我們增加MOVIE
,還有11條線路。我們定義了30的領先,這意味着我們已經消耗(12 - 11)x 30pt = 30pt。
然後我們加上TEXT1
,它分佈在7條線上,寬度爲7 * 30pt。總共我們已經消耗(12 - 4)x 30pt = 240pt。
最後,我們添加TEXT2
,它分佈在3行。只剩下1條線。所有文本的總橫向寬度爲330pt(我們只剩下30pt)。
現在您已經知道了這個數學方法,您可以在模擬模式下執行go()
方法,計算消耗的寬度並使用該信息在您希望的位置添加真實文本。
如果我可以得到文本的寬度顯示verticalText,我會設置文本的位置。我該怎麼做?除了,沒有辦法顯示文字垂直的中心和矩形? – 2014-09-24 14:35:45
目前沒有方法可以獲得該寬度。正如我試圖解釋的那樣:很少有人曾經使用過「VerticalText」,因此在這方面的開發很少。 – 2014-09-24 14:58:49
啊哈,我看了一個老例子,我可能找到了一個解決方法。我會更新我的答案。 – 2014-09-24 15:05:04