#if !NET8 using iTextSharp.text; using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf; #endif using System.IO; namespace Fab2ApprovalSystem.PdfGenerator; public class StandardPdfRenderer { private const int HorizontalMargin = 40; private const int VerticalMargin = 40; public static byte[] GetPortableDocumentFormatBytes(string pageTitle, string htmlText) { byte[] results; MemoryStream memoryStream = GetPortableDocumentFormat(pageTitle, htmlText); results = new byte[memoryStream.Position]; memoryStream.Position = 0; memoryStream.Read(results, 0, results.Length); return results; } public static void WritePortableDocumentFormatToFile(string pageTitle, string htmlText, string path) { using (MemoryStream memoryStream = GetPortableDocumentFormat(pageTitle, htmlText)) { using (FileStream fileStream = new FileStream(path, FileMode.Create)) { memoryStream.CopyTo(fileStream); } } } public static MemoryStream GetPortableDocumentFormat(string pageTitle, string htmlText) { MemoryStream result = new(); #if !NET8 using (Document pdfDocument = new Document(PageSize.A4, HorizontalMargin, HorizontalMargin, VerticalMargin, VerticalMargin)) { PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument, result); 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 return result; } }