public static iTextSharp.text.Image GetITextSharpImageFromAcroForm(
this PdfWriter pdfWriter,
string pdfTemplateFilePath,
IList<CellData> data,
Action<IList<CellData>, AcroFields, PdfStamper> onFillAcroForm,
IList<iTextSharp.text.Font> fonts,
int pageNumber = 1)
{
using (var writerStream = new MemoryStream())
{
var pdfReader = new PdfReader(pdfTemplateFilePath);
using (var stamper = new PdfStamper(pdfReader, writerStream))
{
foreach (var font in fonts)
{
stamper.AcroFields.AddSubstitutionFont(font.BaseFont);
}
var form = stamper.AcroFields;
form.GenerateAppearances = true;
onFillAcroForm.Invoke(data, form, stamper);
stamper.FormFlattening = true;
stamper.Writer.CloseStream = false;
stamper.Close();
pdfReader.Close();
}
writerStream.Position = 0;
var reader = new PdfReader(writerStream);
var importedPage = pdfWriter.GetImportedPage(reader, pageNumber);
//reader.Close(); // iTextSharp 5.4.1.0 needs this to be open.
return iTextSharp.text.Image.GetInstance(importedPage).checkImage();
}
}