iText: созданная таблица (com. lowagie. text) занимает только 80% всей страницы, как заставить ее использовать всю страницу - PullRequest
2 голосов
/ 10 марта 2011

Я пишу следующий код для создания файла PDF с таблицей в нем.

        Document document = new Document(PageSize.A4, 20, 20, 20, 80);
        Font myfont = new Font(FontFactory.getFont(FontFactory.COURIER_BOLD, 13, Font.NORMAL));
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(request.getRealPath("/") + "SAMPLE.pdf"));

        document.open();
        Table table = new Table(2);
        Cell c2 = new Cell();

        int[] widths = {8, 150}; //Tried different values, but no change
        table.setBorder(Rectangle.BOX);
        table.setAlignment(Element.ALIGN_LEFT);
        table.setSpacing(0);
        table.setPadding(0);
        table.setTableFitsPage(true); //Tried with 'false', even removed it, but no change
        table.setWidths(widths);

        c2 = new Cell(new Paragraph("1.     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);
        c2 = new Cell(new Paragraph("TEST DATA     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);

        c2 = new Cell(new Paragraph("2.     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);
        c2 = new Cell(new Paragraph("TEST DATA", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);

        c2 = new Cell(new Paragraph("3.     ", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);
        c2 = new Cell(new Paragraph("TEST DATA", myfont));
        c2.setBorder(Rectangle.NO_BORDER);
        table.addCell(c2);

        document.add(table);
        document.close();

Но созданный файл содержит таблицу, занимающую около 80-85% страницы.Я хочу, чтобы он использовал всю страницу.

Я попытался внести некоторые изменения в код, такие как изменение table.setTableFitsPage(true); на table.setTableFitsPage(false);, и даже попытался удалить его.также изменено с назначенной шириной.Но напрасно, как и во всех случаях, он дал мне только файл с таблицей, занимающей только 80-85% страницы.

Есть ли что-то, чего мне не хватает, чтобы добавить в мой код или есть атрибут, который останавливаеттаблица занимает 100% страницы.

Это создает проблему, когда содержимое велико, поскольку я получаю длинные таблицы с пробелами на странице, которые все еще не заняты.

снимок экрана с PDF-файлом, созданным здесь!

снимок экрана с PDF, созданным

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Вы должны переписать код вашей таблицы, чтобы использовать PdfPTable . Вы можете найти примеры его использования онлайн . Вся четвертая глава iText в действии, второе издание, посвящена таблицам, точнее PdfPTables.

Много примеров кода. Наслаждайтесь.

0 голосов
/ 11 марта 2011

Вместо этого используйте класс PdfPTable, и вы можете установить ширину столбцов для всей таблицы. Чтобы охватить всю страницу, можно создать

float delta = document.getPageSize().getWidth() / numberOfColumns;
// add delta numberOfColumn times
PdfPTable table = new PdfPTable(new float[] {delta, delta, delta, delta });
table.setWidthPercentage(100f);

Ширина, передаваемая в конструкторе, определяет, сколько места занимает данный столбец относительно ширины всей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...