我正面对着
使用索引超出了数组的范围
PdfPTable
向文档添加iTextShrap
时出现错误。以下是代码
Document myDocument = new Document(PageSize.A3.Rotate());
PdfWriter.GetInstance(myDocument, new FileStream("payslip.pdf", FileMode.Create));
myDocument.Open();
PdfPTable table = new PdfPTable(35);
table.TotalWidth = myDocument.PageSize.Width - 80f;
table.LockedWidth = true;
List<PdfPCell> headRow = new List<PdfPCell>();
PdfPCell contractor = new PdfPCell(new Phrase("XXXXXXXXXXXXX"));
contractor.Colspan = 5;
headRow.Add(contractor);
PdfPCell workType = new PdfPCell(new Phrase("Refractory Works"));
workType.Colspan = 5;
headRow.Add(workType);
PdfPCell supervisor = new PdfPCell(new Phrase("XXXXXXXXXXXXXX"));
supervisor.Colspan = 4;
headRow.Add(supervisor);
PdfPCell paySlipHead = new PdfPCell(new Phrase("XXXXXXXXXXXXXXXX"));
paySlipHead.Colspan = 10;
headRow.Add(paySlipHead);
PdfPCell paySlipMonth = new PdfPCell(new Phrase("XXXXXXX"));
paySlipMonth.Colspan = 2;
headRow.Add(paySlipMonth);
PdfPCell blank = new PdfPCell(new Phrase(""));
blank.Colspan = 9;
headRow.Add(blank);
PdfPRow rw = new PdfPRow(headRow.ToArray());
table.Rows.Add(rw);
myDocument.Add(table);
我不知道出了什么问题。请建议
答案 0 :(得分:1)
问题是由于您不尊重文档中解释的内容,更具体地说是我写的部分:
PdfPRow
包中有一个com.itextpdf.text.pdf
对象,但您不应该这样做 直接解决它。 iText在内部使用此类来存储属于的单元格 到同一排。 (iText in Action - 第二版,第4.1.1节&#34;您的第一个表&#34;,第94页)
如果你甚至没有花时间看一下基本的例子,你不应该期望你可以编写有效的代码。
请查看SimpleTable3示例。在此示例中,我不使用PdfPRow
。相反,我将PdfPCell
个对象直接添加到PdfPTable
:
PdfPTable table = new PdfPTable(35);
table.setTotalWidth(document.getPageSize().getWidth() - 80);
table.setLockedWidth(true);
PdfPCell contractor = new PdfPCell(new Phrase("XXXXXXXXXXXXX"));
contractor.setColspan(5);
table.addCell(contractor);
PdfPCell workType = new PdfPCell(new Phrase("Refractory Works"));
workType.setColspan(5);
table.addCell(workType);
PdfPCell supervisor = new PdfPCell(new Phrase("XXXXXXXXXXXXXX"));
supervisor.setColspan(4);
table.addCell(supervisor);
PdfPCell paySlipHead = new PdfPCell(new Phrase("XXXXXXXXXXXXXXXX"));
paySlipHead.setColspan(10);
table.addCell(paySlipHead);
PdfPCell paySlipMonth = new PdfPCell(new Phrase("XXXXXXX"));
paySlipMonth.setColspan(2);
table.addCell(paySlipMonth);
PdfPCell blank = new PdfPCell(new Phrase(""));
blank.setColspan(9);
table.addCell(blank);
document.add(table);
您不必担心行:iText会在内部创建PdfPRow
个实例(记录)。
结果如下:simple_table3.pdf
没有抛出异常。