iTextSharp - как заполнить существующий файл PDF и создать несколько страниц в одном файле - PullRequest
0 голосов

У меня есть файл PDF, который я использую для своего шаблона файла. затем я нахожу необходимые координаты и вставляю учащегося firstName и lastName. для одного студента это работает, но у меня есть массив со студентами, и мне нужно создать простой файл PDF с количеством страниц, равным количеству студентов. То есть, у каждого студента есть своя страница со своими данными

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);

  canvas.BeginText();
  canvas.SetFontAndSize(bf, 40);
  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);
...