问题
标题是在第一页本身。 如果我的身体中有太多的人的照片,将打印在第二页上。 请参阅下面我的问题的图形描述:
现在,请阅读下面的一些代码。 请考虑以下伪代码(因为整个代码太长),但它是非常接近我试图修复代码。
码
头
System.IO.FileInfo tempFileInfo
= new System.IO.FileInfo(System.IO.Path.GetTempFileName());
tempFileInfo.MoveTo(tempFileInfo.FullName + ".pdf");
Document document = new Document(PageSize._11X17);
PdfWriter.GetInstance(document, new System.IO.FileStream(tempFileInfo.FullName, System.IO.FileMode.Create));
document.AddTitle("Sample ");
document.Open();
document.SetMargins(0.5f, 0.5f, 0.5f, 0.5f);
PdfPTable pdfPTableMain = new PdfPTable(1); // 1 columns
//Page Title
iTextSharp.text.Font titleFont = iTextSharp.text.FontFactory.GetFont("Arial", 20, iTextSharp.text.Font.BOLD);
iTextSharp.text.Paragraph titleParagraph = new Paragraph(terminalName + "\n\n"+ "Authorized Personnel", titleFont);
PdfPCell cellTitle = new PdfPCell(titleParagraph);
cellTitle.BorderColor = BaseColor.WHITE;
cellTitle.NoWrap = true;
cellTitle.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
cellTitle.PaddingBottom = 10;
pdfPTableMain.AddCell(cellTitle);
身体
PdfPTable pdfPTableList = new PdfPTable(6);
SqlConnection sqlConnection= Sample.Library.DB_Connection.OpenDatabase();
foreach (DataRow row in personDataSet.Tables[0].Rows)
{
PdfPTable pdfPTablePhoto = new PdfPTable(1);
iTextSharp.text.Image image =
iTextSharp.text.Image.GetInstance(GetPersonPhoto(personId),System.Drawing.Imaging.ImageFormat.Png);
PdfPCell cellFullName = new PdfPCell(new Paragraph(fullName, fullnameFont));
cellFullName.BorderColor = BaseColor.WHITE;
cellFullName.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
pdfPTablePhoto.AddCell(cellFullName);
pdfPTableList.AddCell(pdfPTablePhoto);
}
pdfPTableList.CompleteRow();
pdfPTableMain.AddCell(pdfPTableList);
页脚
iTextSharp.text.Font footerFont1 = iTextSharp.text.FontFactory.GetFont("Arial", 10, iTextSharp.text.Font.BOLD);
iTextSharp.text.Paragraph footerParagraph1 = new Paragraph(
"POSTER GENERATED: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(), footerFont1);
PdfPCell cellFooter1 = new PdfPCell(footerParagraph1);
cellFooter1.BorderColor = BaseColor.WHITE;
cellFooter.DisableBorderSide(Left);
cellFooter.DisableBorderSide(Right);
cellFooter.DisableBorderSide(Bottom);
cellFooter.DisableBorderSide(Top);
cellFooter1.NoWrap = true;
cellFooter1.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
cellFooter1.PaddingBottom = 5;
pdfPTableMain.AddCell(cellFooter1);
pdfPTableMain.KeepTogether = true;
document.Add(pdfPTableMain);
document.Close();
代码的总结,
它可以但正如创建三个对象小区1,小区2和小区2到表。
table.Add(cell1);
table.Add(cell2);
table.Add(cell3);
尝试
- 使用语法
pdfPTableMain.KeepTogether = true
- 使用
skipFirstHeader(true)
- 我应该把它定义为一个
table1.add(table2)
在表2中包含3个小区? (更新:我想这个它没有工作)。
我认为正在发生的事情是,如果我的小区2变得过大,它只是把它另一页上。 我想它的方式是,我有3行第2个是太大,不适合(所以把它另一页)。 我不是iText的或iTextSharp的专家,并会深深地体会到的任何援助。 我已经尝试了一些其他的东西,但似乎只会使情况变得更糟。 我谦恭地接触到更多的有经验的人,并寻求帮助。