Я очень новичок в iText
. Я пытаюсь создать таблицу и абзац на той же странице.Создать таблицу и абзац на одной странице с помощью iText
Я хочу создать таблицу, и я хочу добавить пункт вверху и внизу таблицы.
Здесь я прилагается код и изображение. Пожалуйста, просмотрите и дайте мне любую идею, чтобы решить проблему.
class DottedCell implements PdfPCellEvent {
public void cellLayout(PdfPCell cell, Rectangle position,
PdfContentByte[] canvases) {
PdfContentByte canvas = canvases[PdfPTable.LINECANVAS];
canvas.setLineDash(3f, 3f);
canvas.moveTo(position.getLeft(), position.getTop());
canvas.lineTo(position.getRight(), position.getTop());
canvas.moveTo(position.getLeft(), position.getBottom());
canvas.lineTo(position.getRight(), position.getBottom());
canvas.stroke();
}
}
private void createBill(Document document) throws DocumentException {
paragraph = new Paragraph("Hotel VApps");
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
paragraph = new Paragraph("Phone: 9943123999");
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
paragraph = new Paragraph("Email : [email protected]");
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
DottedLineSeparator separator = new DottedLineSeparator();
separator.setPercentage(59500f/523f);
Chunk linebreak = new Chunk(separator);
document.add(linebreak);
paragraph = new Paragraph("Bill No: 12345");
paragraph.setAlignment(Element.ALIGN_LEFT);
document.add(paragraph);
paragraph = new Paragraph("Bill Date: 01/04/2015 10:30:55 PM");
paragraph.setAlignment(Element.ALIGN_LEFT);
document.add(paragraph);
Report_Page app = new Report_Page();
float[] columnWidths = { 1.5f, 5f, 2f, 1.5f, 2f };
table = new PdfPTable(columnWidths);
table.setTotalWidth(300f);
table.setHorizontalAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(new Phrase("P.No"));
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Item Name"));
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Price"));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Qty"));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Ext Price"));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
table.setHeaderRows(1);
sqlcon.open();
Cursor c = sqlcon.readOrderedItems("");
int rows = c.getCount();
c.moveToFirst();
for (int i = 0; i < rows; i++) {
cell = new PdfPCell(new Phrase(String.valueOf(i + 1)));
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(c.getString(0)));
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(c.getString(2)));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(c.getString(1)));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
total += Double.parseDouble(c.getString(3));
cell = new PdfPCell(new Phrase(c.getString(3)));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
c.moveToNext();
}
sqlcon.close();
cell = new PdfPCell(new Phrase(""));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(""));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(""));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Total"));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(String.valueOf(total)));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setCellEvent(app.new DottedCell());
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);
DottedLineSeparator separator1 = new DottedLineSeparator();
separator1.setPercentage(59500f/523f);
Chunk linebreak1 = new Chunk(separator);
document.add(linebreak1);
paragraph = new Paragraph("Thank You");
paragraph.setAlignment(Element.ALIGN_LEFT);
document.add(paragraph);
table.writeSelectedRows(0, -1, document.leftMargin(), 650,
docWriter.getDirectContent());
}
Выход:
Желаемый результат:
Пожалуйста, дайте мне любую идею, чтобы создать PDF-файл, как это.
Спасибо. Теперь я понимаю, где я ошибся, спасибо еще раз .. !! –
Спасибо за ваши ответы сэр. Теперь я создал счет. !! :-) Но теперь еще одно сомнение сэр. Я хочу распечатать этот счет в POS-принтере. Размер бумаги составит 58 мм. Этот PDF-формат выглядит как A4. Как изменить размер этой страницы для размера принтера POS? Если продукты идут более чем на 100, значит, мне нужно использовать новую страницу. Для этого, как я могу распечатать счет в одном документе. Извините за беспокойство, сэр. Теперь у меня нет другой руки, чтобы помочь мне сэр. Пожалуйста, дайте мне знать сэр .. –
Опубликовать это как отдельный вопрос пожалуйста. Не используйте раздел комментариев для создания новых вопросов. –