Итак, я пытаюсь создать расписание, используя OpenPDF.В настоящее время я сталкиваюсь с проблемой того, как создать таблицу с различными диапазонами colspans и rowspans (в зависимости от продолжительности расписания) для ячеек.Я уже искал и не нашел ничего, что сталкивается или похоже на такую проблему.Я уже создал расписание , где будут размещаться расписания.Я пытаюсь достичь чего-то вроде этого .После попытки добавить расписание (ячейка с интервалом в 4), ячейки времени (8:30 - 10:00, ...) начали смещаться, как this .
Вот код, который я написал:
Document document = new Document();
try {
PdfWriter.getInstance(document, new FileOutputStream("TimeTable.pdf"));
document.open();
String[] times = new String[]{"7:00 - 8:30", "8:30 - 10:00", "10:00 - 11:30",
"11:30 - 13:00", "13:00 - 14:30", "14:30 - 16:00",
"16:00 - 17:30", "17:30 - 19:00", "19:00 - 20:30"};
// 7 columns. 28 rows. 1st row is time, M, TH, T, F, W, S
DMSchedule schedule = new DMSchedule(0, "M", "08:00", "10:00", 0, "S201", "CS101", 0);
PdfPTable table = new PdfPTable(7);
PdfPCell cell = new PdfPCell(new Paragraph("TIME"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("M"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("TH"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("T"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("F"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("W"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("S"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
int rowStartingPos = 4;
int timeCounter = 0;
for (int row = 2; row <= 28; row++) { // started at 2 because 1st row is already occupied by TIME, M, TH, T, F, W, S
limit = 6;
for (int column = 1; column <= 6; column++) {
if ((row == 2 || row == 5 || row == 8 ||
row == 11 || row == 14 || row == 17 ||
row == 20 || row == 23 || row == 26) && column == 1) {
cell = new PdfPCell(new Paragraph(times[timeCounter]));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setRowspan(3);
table.addCell(cell);
timeCounter++;
}
if (row == rowStartingPos) {
if (column == 1) {
cell = new PdfPCell(new Paragraph("CS101:\tnull(M)\t08:00 - 10:00"));
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setRowspan(4);
table.addCell(cell);
}
}
table.addCell("\t");
}
}
document.add(table);
} catch (DocumentException | IOException de) {
System.err.println(de.getMessage());
}
document.close();
Я надеюсь, что вы мне поможете.Спасибо!