2012-10-08 40 views
0

如何在對角線上添加多行文本itext。這意味着如果文本對於第一個對角線(最大對角線)較大,則它應該在下一個對角線或上一個對角線上移動,因此可以看到所有文本。對角線上的itext多行文本

我已經計算了對角線的文字角度,並使用pdfcontentbyte來加蓋印章,但如果我的文字比對角線更長,那麼不會顯示對角線上的其他文字。我想我必須做出一些數學或我看到setsimplecolumn和大塊的東西,但這會顯示我的文字水平對齊。 如果有人有一些想法?謝謝,當然還需要一些代碼示例。

something like this i want(the picture simulates a pdf), where the black lines will be the text, it can be more than three lines if the text is bigger,it is dynamic

回答

0

別拍我,如果我錯了,但根據您的描述,我認爲你是在談論「非正規列」。請參閱http://itextpdf.com/examples/iia.php?id=67

此類型的列不是矩形。基本上,您可以定義左邊界的座標(可以是對角線)和右邊界的座標。然後你在這兩行之間插入文本。

如果這不是你的意思,也許你想對角地寫文本。在這種情況下,您仍然可以使用ColumnText,但您需要更改座標系,以便文本不會從左到右以水平線寫入,而是從上到下(或從下到上)以對角線形式寫入。使用concatCTM方法更改座標系。

+0

第二個與文本對角線,你能給我一個如何使用concatCT和ColumnText的例子,我似乎並沒有使它的工作。謝謝..,本質上我想對角地寫文本,如果文本要在最大的對角線上寫長,那麼到達對角線,如果文本仍然很大,則到達第一個對角線的向下對角線。遞歸的東西 – adi1989

+0

根據您的繪圖,我發現concatCTM方法不夠充分。爲什麼不?因爲我建議你應該先創建你的列,然後旋轉它。但是:無法預先知道需要多少對角線。您無法事先確定不規則柱的「形狀」。 –

+0

所以你必須做大量的數學。取出字符串,測量它的寬度,然後進行幾次迭代,以找出如何將字符串剪切成不同的片段。最後,使用中間的x,y座標,居中對齊以及所需的角度逐行繪製ColumnText.showTextAligned()。順便說一句:額外的繪圖對理解問題非常有幫助!謝謝! –