netbeans 如何插入不同位置的段落- itext

vbkedwbf  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(148)

表格的绘制是正确的,但由于数据重复而出错。条形码必须是这样的,以避免员工检查错误代码时出错。

最理想的情况是一张照片胜过千言万语.

我的职能:

Document documentoPDF = new Document();

    try {
        PdfWriter writer = PdfWriter.getInstance(documentoPDF, new FileOutputStream("c:\\exporta_Celso\\contagem_" + jComboBox1.getSelectedItem().toString() + ".pdf"));
        documentoPDF.open();
        documentoPDF.setPageSize(PageSize.A4);

        PdfPTable table = new PdfPTable(3);
        table.setWidthPercentage(100);
        table.setTotalWidth(documentoPDF.getPageSize().getWidth());

        for (int i = 0; i < itens.size(); i++) {
            System.out.println(((List) itens.get(i)).get(0).toString());
            System.out.println(((List) itens.get(i)).get(1).toString());
            String item = ((List) itens.get(i)).get(1).toString();

            BarcodeEAN codeEAN = new BarcodeEAN();

            codeEAN.setCodeType(codeEAN.EAN13);
            String barCodeBruto = ((List) itens.get(i)).get(0).toString();
            String barCode = null;
            if (barCodeBruto.length() != 13) {
                barCode = ("0000000000000" + barCodeBruto).substring(barCodeBruto.length());
            } else {
                barCode = barCodeBruto;
            }
            codeEAN.setCode(barCode);
            PdfContentByte cb = writer.getDirectContent();

            Image imageEAN = codeEAN.createImageWithBarcode(cb, null, null);

            PdfPCell cellBar = new PdfPCell(imageEAN);
            PdfPCell cellDesc = new PdfPCell(new Paragraph(item));
            PdfPCell cellQtd = new PdfPCell(new Paragraph("QTD."));

            cellBar.setPadding(3);
            cellBar.setUseDescender(true);
            cellBar.setUseAscender(true);

            cellDesc.setPadding(3);
            cellDesc.setUseDescender(true);
            cellDesc.setUseAscender(true);

            cellQtd.setPadding(3);
            cellQtd.setUseDescender(true);
            cellQtd.setUseAscender(true);

            float height = table.calculateHeights();
            float width = documentoPDF.getPageSize().getWidth();

            if (i % 2 == 0) {
                float[] widths = new float[]{145f, width - 36 - 10f, 80f};
                table.setWidths(widths);

                table.addCell(cellBar);
                table.addCell(cellDesc);
                table.addCell(cellQtd);

            }else{
                float[] widths = new float[]{80f, width - 36 - 10f, 145f};
                table.setWidths(widths);

                table.addCell(cellQtd);
                table.addCell(cellDesc);
                table.addCell(cellBar);
            }

            PdfContentByte canvas = writer.getDirectContent();

            ColumnText columnText = new ColumnText(canvas);
            columnText.setSimpleColumn(36, 756 - height, width - 36, 36);
            columnText.addElement(table);
            columnText.go();
        }

    } catch (DocumentException de) {
        de.printStackTrace();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    } finally {
        documentoPDF.close();
    }
eh57zj3b

eh57zj3b1#

我通过在循环之外创建一个父表来解决这个问题。
`

PdfPTable tableFinal = new PdfPTable(1);
tableFinal.setWidthPercentage(100);
tableFinal.setTotalWidth(documentoPDF.getPageSize().getWidth());

tableFinal.addCell(table);                
PdfContentByte canvas = writer.getDirectContent();
ColumnText columnText = new ColumnText(canvas);
columnText.setSimpleColumn(36, 756 - height, width - 36, 36);
columnText.addElement(tableFinal);
columnText.go();

`

相关问题