Удалить границу вложенной таблицы из таблицы itext

#java #itext7

#java #itext7

Вопрос:

Я пытался создать вложенную таблицу в itext с помощью Java. Я могу ее создать, но неожиданно вложенная таблица имеет свою собственную границу вместе с границей ячейки исходной таблицы. Есть ли какой-либо способ удалить внешнюю границу только вложенной таблицы в правом столбце nestedParent? мой сгенерированный формат pdf Мой код:

 String dest= FileSystems.getDefault().getPath("").toAbsolutePath().toString() "/test.pdf";
        log.info(dest);
        PdfWriter writer= new PdfWriter(dest);
        PdfDocument pdfDoc = new PdfDocument(writer);
        pdfDoc.addNewPage();

        Document document = new Document(pdfDoc);

        float [] pointColumnWidths = {150F, 150F};
        Table outerTable = new Table(pointColumnWidths);

        for (int i = 0; i < 5; i  ) {
            outerTable.addCell("col1-"   i);
            outerTable.addCell("col2-"   i);

        }

        float [] innerTablePointColumnWidths = {150F, 150F, 150F, 150F};
        Table nestedTable = new Table(innerTablePointColumnWidths);

        nestedTable.addCell("col11");
        nestedTable.addCell("col11_val");

        nestedTable.addCell("col12");
        nestedTable.addCell("col12_val");

        nestedTable.addCell("col22");
        nestedTable.addCell("col22_val");

        nestedTable.addCell("col23");
        nestedTable.addCell("col23_val");

        nestedTable.addCell("col31");
        nestedTable.addCell("col31_val");

        nestedTable.addCell("col32");
        nestedTable.addCell("col32_val");

        outerTable.addCell("nestedParent");

        outerTable.setBorder(Border.NO_BORDER);
       /* Cell cell = new Cell();
        cell.add(nestedTable);*/
        // cell.setBorder(Border.NO_BORDER);
        //outerTable.addCell(cell);

        outerTable.addCell(nestedTable);



        document.add(outerTable);

        document.close();
  

библиотека, связанная с itext, версия 7.1.12

Ответ №1:

Я не смог решить проблему, используя внутреннюю таблицу. Итак, чтобы решить эту проблему, я должен определить таблицу из 5 столбцов, а затем, когда необходимо, я определил необходимое определение ячейки для этой конкретной записи, используя row и col span , например

 Cell cell= new Cell(1,1);
Cell cell=new Cell(1,4);
  

Для пяти столбцов внутри строки:

 Cell cell= new Cell(4,1)
  

таким образом, это решается!

Ответ №2:

Вам нужно удалить каждую границу из внутренних ячеек таблицы (т. Е. ячейка «col11» должна установить для своей верхней и левой границы значение null или Border#NO_BORDER, а также установить для внутренней ячейки таблицы значение null).

Кроме того, вы должны установить заполнение внутренней таблицы равным 0, чтобы устранить пробел.

 Cell cell = new Cell();
        cell.setPadding(0);
        cell.add(nestedTable);
        outerTable.addCell(cell);
  

Комментарии:

1. можете ли вы добавить код этого, расширив мой код, указанный в вопросе, пожалуйста?

2. nestedTable.setPadding(-1);nestedTable.addCell("col11").setBorderLeft(Border.NO_BORDER); Я изменил этот способ, правая граница внутренней таблицы выравнивается с внешней [для заполнения], но другие остаются такими, какими они были

3. Я решил это другим удобным способом [в моем ответе]. Спасибо за ваши усилия