#if !NET8 using iTextSharp.text; using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf; #endif using System.IO; namespace Fab2ApprovalSystem.PdfGenerator; /// /// This class is responsible for rendering a html text string to a PDF document using the html renderer of iTextSharp. /// public class StandardPdfRenderer { private const int HorizontalMargin = 40; private const int VerticalMargin = 40; public byte[] Render(string htmlText, string pageTitle) { byte[] renderedBuffer; using (MemoryStream outputMemoryStream = new()) { #if !NET8 using (Document pdfDocument = new Document(PageSize.A4, HorizontalMargin, HorizontalMargin, VerticalMargin, VerticalMargin)) { PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument, outputMemoryStream); pdfWriter.CloseStream = false; pdfWriter.PageEvent = new PrintHeaderFooter { Title = pageTitle }; pdfDocument.Open(); using (StringReader htmlViewReader = new StringReader(htmlText)) { using (HTMLWorker htmlWorker = new HTMLWorker(pdfDocument)) { htmlWorker.Parse(htmlViewReader); } } } #endif renderedBuffer = new byte[outputMemoryStream.Position]; outputMemoryStream.Position = 0; outputMemoryStream.Read(renderedBuffer, 0, renderedBuffer.Length); } return renderedBuffer; } }