簡體   English   中英

我們如何在 iText 中將 MultiColumnText 轉換為 ColumnText?

[英]How do we convert MultiColumnText to ColumnText in iText?

這是我使用 OpenPDF(舊版 iText 4)的代碼。 我在網上搜索了可能的解決方案,但 ColumnText 的所有實現都令人困惑。 我也嘗試實現它,但沒有得到預期的結果。

MultiColumnText mct = new MultiColumnText();
mct.addReguarColumns(document.left(), document.right(), column.gutter, column.colNum);
Paragraph p = new Paragraph("Testing");
mct.addElement(p);
document.add(mct);

這是使用 MultiColumnText。 現在,我正在測試 iText 5 並發現 MultiColumnText 已被刪除。 我在這里看到一個針對 C# 的問題,我將代碼更改為以下以支持 ColumnText:

ColumnText mct = new ColumnText(writer.getDirectContent());
float middle = (document.left() + document.right()) / 2;
float[][] COLUMNS = {
                { document.left(), document.bottom(), middle - 15, document.top() } ,
                { middle + 15, document.bottom(), document.right(), document.top() }
        };
Paragraph p = new Paragraph("Testing");
mct.addElement(p);
int col = 0;
int count = 0;
int status = ColumnText.START_COLUMN;
while (ColumnText.hasMoreText(status)) {
mct.setSimpleColumn(
COLUMNS[col][0], COLUMNS[col][1],
COLUMNS[col][2], COLUMNS[col][3]);
status = mct.go();
if (++count > 1) {
      count = 0;
      document.newPage();
}
}

但輸出是一團糟。 我在這里錯過了什么嗎?

請查看官方文檔,更具體地說是常見問題解答問題How to fit a String inside a rectangle? 文本的絕對定位部分

在這個問題的答案中,它說:

如果可以將內容分發到不同的頁面,則不需要模擬模式,只需要插入一個document.newPage();

 ColumnText ct = new ColumnText(cb); ct.setSimpleColumn(rect); int status = ct.go(); while (ColumnText.hasMoreText(status)) { document.newPage(); ct.setSimpleColumn(rect); status = ct.go(); }

在這個例子中rect包含矩形的坐標。

誠然,在本例中,每個頁面只有一個矩形,但您可以輕松地調整代碼,如下所示:

如果可以將內容分發到不同的頁面,則不需要模擬模式,只需要插入一個document.newPage();

ColumnText ct = new ColumnText(cb);
ct.setSimpleColumn(rect[0]);
ct.go();
ct.setSimpleColumn(rect[1]);
int status = ct.go();
while (ColumnText.hasMoreText(status)) {
    document.newPage();
    ct.setSimpleColumn(rect[0]);
    ct.go();
    ct.setSimpleColumn(rect[1]);
    status = ct.go();

}

在這個例子中, rect[]是一個包含兩個Rectangle對象的數組,一個用於左列,一個用於右列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM