Можно ли вставить данные в отдельную страницу с помощью itextsharp через цикл - PullRequest
0 голосов

У меня есть файл шаблона. Затем я беру данные из базы данных и заполняю шаблон. Теперь мне нужно взять данные через al oop и вставить их на другие страницы.

var reader = new PdfReader(templateFilePath);
var fontPath = Path.Combine(_webHostEnvironment.WebRootPath, "fonts", "microsoft_sans_serif.ttf");

var ms = new MemoryStream();
var pageSize = reader.GetPageSize(1);

byte[] bytes;

using (var stamper = new PdfStamper(reader, ms))
{
    var canvas = stamper.GetOverContent(1);
    var bf = BaseFont.CreateFont(fontPath, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
    //var font = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL);

    canvas.BeginText();
    canvas.SetFontAndSize(bf, 40);

    //this data will be in the array and insert each object of the array into a separate page

    {canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER,
        $"{student.StudentUser.FirstName} {student.StudentUser.LastName}",
        (pageSize.Left + pageSize.Right) / 2, pageSize.GetTop(Utilities.MillimetersToPoints(95)), 0);

    canvas.EndText();

    stamper.Close();
    bytes = ms.ToArray();
}

var fileName =
    $"{student.StudentUser.FirstName.ToLower()}_{student.StudentUser.LastName.ToLower()}_{student.Year.OnlineTestStartDate.Year}_certificate.pdf";

return File(bytes, "application/pdf", fileName);
...