Как настроить ячейки таблицы разных размеров, используя iText5 в Java - PullRequest
0 голосов
/ 07 февраля 2020

Я пишу код Java для создания шаблона PDF. В разделе заголовка pdf я создал таблицу pdfTable, которая имеет 7 ячеек, включая ячейку изображения (Lo go), текстовое поле (Id Number) и оставшиеся 5 ячеек, чтобы заполнить фактический номер Id.

На выходе я должен получить большую ячейку изображения (представляющую Lo go), а числовые ячейки Id должны быть меньше по размеру, чем ячейка изображения. Пример, как на изображении ниже (ожидаемый результат).

Expected Result

Однако при создании шаблона я не могу заполнить, как ожидалось, как показано на изображении выше (ожидаемый результат) .

Когда генерируется PDF, все ячейки принимают размер ячейки изображения.

Я пробовал с разными подходами, такими как использование setFixedHeight (), setRowSpan (), setColumnSpan () методы et c. Но ничего не сработало. Ниже на рисунке показан мой вывод (токовый выход).

Current Output

Ниже приведен код, который я написал.

public class NbaBafTemplateGenerator {

    private void createNbaBafTemplate(File outPutfileName, NbaBafTemplateData formData,String logoName) {

        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outPutfileName));
                document.open();
                PdfPTable table = null;

    // Passing the data as a single String                      

              //IdNumber varible is of type String and has 5 characters of the number.
                table = NbaBafTemplatePage.createHeaderTable(logoName + ",Id Number: , " + 
                formData.getIdNumber(), 7, "", "","1.5f, 1f, 0.2f, 0.2f, 0.2f, 0.2f, 0.2f"); 
                document.add(table); 

    }// END OF CLASS NbaBafTemplateGenerator.


//Class NbaBafTemplatePage  Begins.

    public class NbaBafTemplatePage extends PdfPageEventHelper {

        public static PdfPTable createHeaderTable(String text, int columnCount, String colour, String align, String colSize)
            throws DocumentException, IOException {

                    PdfPTable table = null;
                    table = new PdfPTable(columnCount); // 7 columns.
                    table.setWidthPercentage(100); // Width 100%
                    table.setSpacingBefore(0f); /
                    table.setSpacingAfter(10f);

              //Assigning column widths based on input width params(colSize).               
                float[] tablecolumnWidths = {
                        Float.parseFloat(colSize.split(",")[0]),
                        Float.parseFloat(colSize.split(",")[1]),
                        Float.parseFloat(colSize.split(",")[2]),
                        Float.parseFloat(colSize.split(",")[3]),
                        Float.parseFloat(colSize.split(",")[4]),
                        Float.parseFloat(colSize.split(",")[5]),
                        Float.parseFloat(colSize.split(",")[6])};   

            PdfPCell imgCell = new PdfPCell(createImageCell(text.split(",")[0]));

                    //imgCell.setColspan(3);
                    //imgCell.setRowspan(3);
                    imgCell.setBorder(PdfPCell.NO_BORDER);
                    imgCell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    imgCell.setVerticalAlignment(Element.ALIGN_LEFT);
                    table.addCell(imgCell);


            PdfPCell idCell = new PdfPCell(new Paragraph(text.split(",")[1]));

                    idCell.setBorderColor(BaseColor.BLACK);
                    idCell.setBackgroundColor(BaseColor.LIGHT_GRAY);
                    idCell.setPaddingLeft(10);
                    idCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    idCell.setVerticalAlignment(Element.ALIGN_RIGHT);
                    table.addCell(idCell);

            PdfPCell cellC0 = new PdfPCell(new Paragraph(text.split(",")[2]));

                cellC0.setBorderColor(BaseColor.BLACK); 
                cellC0.setHorizontalAlignment(Element.ALIGN_CENTER);
                cellC0.setVerticalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellC0);

           PdfPCell cellC1 = new PdfPCell(new Paragraph(text.split(",")[3]));

                cellC1.setBorderColor(BaseColor.BLACK); 
                cellC1.setHorizontalAlignment(Element.ALIGN_CENTER);
                cellC1.setVerticalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellC1);

           PdfPCell cellC2 = new PdfPCell(new Paragraph(text.split(",")[4]));

                cellC2.setBorderColor(BaseColor.BLACK); 
                cellC2.setHorizontalAlignment(Element.ALIGN_CENTER);
                cellC2.setVerticalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellC2);

           PdfPCell cellC3 = new PdfPCell(new Paragraph(text.split(",")[5]));

                cellC3.setBorderColor(BaseColor.BLACK); 
                cellC3.setHorizontalAlignment(Element.ALIGN_CENTER);
                cellC3.setVerticalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellC3);

           PdfPCell cellC4 = new PdfPCell(new Paragraph(text.split(",")[6]));
           cellC4.setBorderColor(BaseColor.BLACK); 
           cellC4.setHorizontalAlignment(Element.ALIGN_CENTER);
           cellC4.setVerticalAlignment(Element.ALIGN_MIDDLE);
           table.addCell(cellC4);

    return table;
    }//END OF METHOD createHeaderTable.

        public static PdfPCell createImageCell(String path) throws DocumentException, IOException {
        Image img = Image.getInstance(path);
        PdfPCell cell = new PdfPCell(img, true);

        return cell;
    }
  }

Я использую Java и iText 5.x версия.

Может кто-нибудь, пожалуйста, дайте мне знать, как сгенерировать таблицу PDF с различными размерами ячеек.

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