iText - Странное поведение при изменении столбца / страницы с ColumnText

Я новичок в iText и пытаюсь сделать следующее:

прочитать список текстовых файлов с локального жесткого дискаупорядочить тексты файлов в 2-х колоночном макете pdf файладобавьте последовательно пронумерованный индекс перед каждым текстом

Я начал с примера MovieColumns1 (http://itextpdf.com/examples/iia.php?id=64) и в итоге получил следующий код:

    final float[][] COLUMNS_COORDS = { { 36, 36, 296, 806 }, { 299, 36, 559, 806 } };

    Document document = new Document(PageSize.A4);
    PdfWriter writer = PdfWriter.getInstance(document, resultFile);
    document.open();

    ColumnText ct = new ColumnText(writer.getDirectContent());
    ct.setSimpleColumn(COLUMNS_COORDS[0][0], COLUMNS_COORDS[0][1],
        COLUMNS_COORDS[0][2], COLUMNS_COORDS[0][3]);

    File textDir = new File("c:/Users/raddatz/Desktop/123/texts/");
    File[] files = textDir.listFiles();

    int i = 1;
    int column = 0;
    for (File file : files) {
        String text = FileUtils.readFileToString(file, "UTF-8");
        float yLine = ct.getYLine();
        System.out.println("adding '" + file.getName() + "'");

        PdfPCell theText = new PdfPCell(new Phrase(text, new Font(Font.HELVETICA, 10)));
        theText.setBorder(Rectangle.NO_BORDER);
        theText.setPaddingBottom(10);
        PdfPCell runningNumber = new PdfPCell(new Phrase(new DecimalFormat("00").format(i++), new Font(
            Font.HELVETICA, 14, Font.BOLDITALIC,
            new Color(0.7f, 0.7f, 0.7f))));
        runningNumber.setBorder(Rectangle.NO_BORDER);
        runningNumber.setPaddingBottom(10);
        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[] { 12, 100 });
        table.addCell(runningNumber);
        table.addCell(theText);
        ct.addElement(table);
        int status = ct.go(true);
        if (ColumnText.hasMoreText(status)) {
            column = Math.abs(column - 1);
            if (column == 0) {
                document.newPage();
                System.out.println("inserting new page with size :" + document.getPageSize());
            }
            ct.setSimpleColumn(
                COLUMNS_COORDS[column][0], COLUMNS_COORDS[column][1],
                COLUMNS_COORDS[column][2], COLUMNS_COORDS[column][3]);
            yLine = COLUMNS_COORDS[column][3];
            System.out.println("correcting yLine to: " + yLine);
        } else {
            ct.addElement(table);
        }
        ct.setYLine(yLine);
        System.out.println("before adding: " + ct.getYLine());
        status = ct.go(false);
        System.out.println("after adding: " + ct.getYLine());
        System.out.println("--------------------------------");
    }

    document.close();

Здесь вы можете увидеть результат:http://d.pr/f/NEmx

Глядя на первую страницу полученного PDF, я предположил, что все работает хорошо.

Но на второй странице вы можете увидеть проблему (ы):

текст № 31 отображается не полностью (первая строка + указатель обрезаны / не видны)текст № 46 отображается не полностью (первые три строки + указатель обрезаны / не видны)

На странице 3 все, кажется, снова в порядке. Я действительно потерян здесь.

- ОБНОВЛЕНИЕ (2013-03-14) -

Я проанализировал содержание PDF сейчас. Проблема не в том, что контент отображается в невидимых областях, а в том, что контент вообще отсутствует в pdf. Недостающая часть контента - это та, которая поместилась бы в предыдущем столбце / странице. Таким образом, похоже, что ColumnText.go (true) манипулирует объектом, переданным addElement () ранее. Кто-нибудь может это подтвердить? Если так: что я могу с этим поделать?

- конец ОБНОВЛЕНИЕ (2013-03-14) -

Ждем Вашего ответа

С уважением, Свен

Ответы на вопрос(1)

Ваш ответ на вопрос