我的任务是创建一个包含多个页面和多个表格的PDF模板。下面是我编写的用于创建表的代码。我不知道如何创建该表的模板。当我更改pageSize.GetLeft(40), pageSize.GetBottom(200)
的值时,模板中没有任何效果。
Rectangle pageSize = document.PageSize;
Department = "Town Development Department";
WebSite = "www.cmdachennai.gov.in";
VersionNumber = "1.0.77";
Phrase cc = new Phrase("This is report", H2);
Paragraph hp = new Paragraph();
hp.Add(cc);
Phrase c1 = new Phrase("Check List Report", H5);
Phrase c2 = new Phrase("Report Generated On : ", H3);
Phrase c3 = new Phrase(DateTime.Now.ToString("dd-MM-yyyy"), H3);
Phrase c5 = new Phrase("Version Number : ", H3);
Phrase c6 = new Phrase(VersionNumber, H3);
//Phrase c7 = new Phrase("Version Number : ", H3);
Paragraph hp4 = new Paragraph();
hp4.Add(c5);
hp4.Add(c6);
Paragraph hp1 = new Paragraph();
hp1.Add(c2);
hp1.Add(c3);
hp.Alignment = 1;
PdfPTable tblTopHeading = new PdfPTable(1);
tblTopHeading.WidthPercentage = 100;
PdfPCell Topcell = new PdfPCell();
Topcell.AddElement(hp);
Topcell.HorizontalAlignment = 1;
Topcell.BorderWidthBottom = 0f;
Topcell.BorderWidthLeft = 0f;
Topcell.BorderWidthRight = 0f;
Topcell.BorderWidthTop = 0f;
tblTopHeading.AddCell(Topcell);
document.Add(tblTopHeading);
Paragraph hp2 = new Paragraph(Department, H4);
Paragraph hp3 = new Paragraph(WebSite, H4);
Phrase c = new Phrase("\n", H4);
PdfPTable tblHeading = new PdfPTable(new float[] { 100f, 60f });
tblHeading.WidthPercentage = 100;
PdfPCell cell_1 = new PdfPCell();
PdfPCell cell_2 = new PdfPCell();
Paragraph hp5 = new Paragraph();
hp5.Add(c1);
//hp5.Add(c2);
cell_1.AddElement(hp5);
hp1.Alignment = 2;
hp2.Alignment = 2;
hp3.Alignment = 2;
hp4.Alignment = 2;
cell_2.AddElement(hp1);
cell_2.AddElement(hp4);
cell_1.BorderWidthBottom = 0f;
cell_1.BorderWidthLeft = 0f;
cell_1.BorderWidthRight = 0f;
cell_1.BorderWidthTop = 0f;
cell_2.BorderWidthBottom = 0f;
cell_2.BorderWidthLeft = 0f;
cell_2.BorderWidthRight = 0f;
cell_2.BorderWidthTop = 0f;
tblHeading.AddCell(cell_1);
tblHeading.AddCell(cell_2);
document.Add(tblHeading);
cb.AddTemplate(template, pageSize.GetLeft(40), pageSize.GetBottom(200));
事实证明,您添加到cb
的模板(这里可能是cb
可能是]
cb.AddTemplate(template, pageSize.GetLeft(40), pageSize.GetBottom(200));
为空:
变量声明
PdfTemplate template;
,并且在OnOpenDocument方法中,template = cb.CreateTemplate(300, 800);
是创建模板
您只需创建它,然后添加它。因此,在不同位置添加该模板不会造成任何差异,这并不奇怪,因为有效地看不到空模板。
现在问
您能解释一下如何将表格放在
pdftemplate
中,因为现在我只是创建模板
PdfTemplate
源自PdfContentByte
,并且要将结构化内容(Paragraph
,PdfPTable
,...)添加到PdfContentByte
,请使用ColumnText
类,例如像这样:
using (FileStream output = new FileStream(@"TemplateWithTable.pdf", FileMode.Create, FileAccess.Write))
using (Document document = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(document, output);
document.Open();
PdfPTable table = new PdfPTable(2);
table.AddCell("Test");
table.AddCell("Table");
PdfContentByte canvas = writer.DirectContent;
PdfTemplate template = canvas.CreateTemplate(300, 800);
Rectangle pageSize = document.PageSize;
canvas.AddTemplate(template, pageSize.GetLeft(40), pageSize.GetBottom(200));
ColumnText ct = new ColumnText(template);
ct.SetSimpleColumn(new Rectangle(100, 100, 300, 600));
ct.AddElement(table);
ct.Go();
document.Close();
}