我正在打开一个pdf模板并创建一个新的pdf并在其上书写。在循环中我必须从列表中输入动态数据,我正在减去高度变量以将一个项目放在另一个项目之后。我的问题是,当列表太长并且接近pdf页面的末尾时,代码不会创建新的空白页面以继续编写列表的其余项目。但是,它会在页面的最后一项中覆盖其余项目。我试图增加我的高度变量,但代码仍无法生成新页面。
string pdfpath = context.Server.MapPath(@"~/mypdf_new.pdf");
string oldFile = context.Server.MapPath(@"~/mypdftemplate.pdf");
string newFile = pdfpath;
PdfReader reader = new PdfReader(oldFile);
iTextSharp.text.Rectangle size = reader.GetPageSizeWithRotation(1);
Document document = new Document(size);
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
string myFont = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts),
"Calibri.TTF");
iTextSharp.text.pdf.BaseFont bfR;
bfR = iTextSharp.text.pdf.BaseFont.CreateFont(myFont,
iTextSharp.text.pdf.BaseFont.IDENTITY_H,
iTextSharp.text.pdf.BaseFont.EMBEDDED);
BaseFont title = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
iTextSharp.text.Font titleFont = new iTextSharp.text.Font(title, 10, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLACK);
int myheight = 500;
foreach (var mypro in listofproducts)
{
ColumnText ct26 = new ColumnText(cb);
Phrase myText26 = new Phrase(mypro.ProductCode, titleFont);
ct26.SetSimpleColumn(myText26, 60, myheight, 580, 317, 15, Element.ALIGN_LEFT);
ct26.Go();
ColumnText ct28 = new ColumnText(cb);
Phrase myText28 = new Phrase(Convert.ToString(mypro.quantity), titleFont);
ct28.SetSimpleColumn(myText28, 340, myheight, 580, 317, 15, Element.ALIGN_LEFT);
ct28.Go();
myheight = myheight - 20;
}
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
document.Close();
fs.Close();
writer.Close();
reader.Close();