मैं 2 नेस्टेड टेबल बनाने का प्रयास कर रहा हूं, एक कैप्शन के साथ, और दूसरा मूल्यों के साथ (उनमें से कुछ खाली), जैसे:

Desired rendering

लेकिन यह निम्नानुसार प्रस्तुत करता है, पंक्ति 3 में पंक्ति 4 के मान के साथ:

Actual rendering

पंक्ति 3 का सुझाव किसी तरह छोड़ दिया गया था। मैं क्या गलत कर रहा हूं?

नीचे कोड है:

private PdfPTable getOrderHeaderTable() {
    PdfPTable table = new PdfPTable(new float[]{25f, 25f, 20f, 20f});

    table.addCell(getCaptionCell());
    table.addCell(getBillingAddressCaptionCell());
    table.addCell(getShippingAddressCaptionCell());
    addBillingAddress(table);
    addShippingAddress(table);

    // These are the nested tables I'm referring to:
    addOrderInfoCaptions(table);
    addOrderInfo(table);

    return table;
}

private void  addOrderInfoCaptions(PdfPTable table) {
    PdfPCell cell = new PdfPCell(getOrderInfoCaptionTable());
    cell.setBorder(0);
    table.addCell(cell);
}

private void addOrderInfo(PdfPTable table) {
    PdfPCell cell = new PdfPCell(getOrderInfoTable());
    cell.setBorder(0);
    table.addCell(cell);
}

private PdfPTable getOrderInfoCaptionTable() {
    PdfPTable table = new PdfPTable(1);

    table.addCell(getTextCell(bold, BaseColor.WHITE, 0, 0, "Order Date:"));
    table.addCell(getTextCell(bold, BaseColor.WHITE, 0, 0, "Order Number:"));
    table.addCell(getTextCell(bold, BaseColor.WHITE, 0, 0, "Reservation Number:"));
    table.addCell(getTextCell(bold, BaseColor.WHITE, 0, 0, "PO Number:"));
    table.addCell(getTextCell(bold, BaseColor.WHITE, 0, 0, "Gift Registry:"));

    return table;
}

private PdfPTable getOrderInfoTable() {
    PdfPTable table = new PdfPTable(1);
    table.addCell(getTextCell(regular, BaseColor.WHITE, 0, 0, getOrderDateString()));
    table.addCell(getTextCell(regular, BaseColor.WHITE, 0, 0, order.getCommerceHubId()));
    table.addCell(getTextCell(regular, BaseColor.WHITE, 0, 0, order.getReservationNumber()));
    table.addCell(getTextCell(regular, BaseColor.WHITE, 0, 0, order.getPartnerPurchaseOrderNumber()));
    table.addCell(getTextCell(regular, BaseColor.WHITE, 0, 0, getGiftRegistryID()));

    return table;
}

private String getOrderDateString() {
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
    return sdf.format(order.getOrderDate());
}

protected PdfPCell getTextCell(Font font, BaseColor color, int border, int horizontalAlignment, String value) {
    PdfPCell cell = new PdfPCell(new Phrase(value, font));
    cell.setHorizontalAlignment(horizontalAlignment);
    cell.setBorder(border);
    cell.setBackgroundColor(color);
    return cell;
}

अगर कोई मेरी मदद कर सकता है, तो मैं इसकी बहुत सराहना करूंगा; यह एक महत्वपूर्ण रिलीज को रोक रहा है।

0
IntelliData 20 फरवरी 2019, 20:25

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि समस्या यह थी कि रिक्त मान। दूसरे शब्दों में,

 new PdfPCell(new Phrase(""))

काम नहीं करता।

लेकिन अगर मैं कोई चरित्र सम्मिलित करता हूं, जैसे कि कोई स्थान:

new PdfPCell(new Phrase(" "))

समस्या गायब हो जाती है।

मुझे नहीं पता ऐसा क्यों होता है। मुझे लगता है कि एक खाली वाक्यांश = खाली सेल = कोई स्थान नहीं लेता है? किसी भी मामले में, यह काम करता है।

0
IntelliData 20 फरवरी 2019, 22:27