public byte[] ConvertHTMLToPDF(RequestTxEditor oRequest) { if (oRequest.TxContent == null) oRequest.TxContent = "

Content - Water mark

"; // string htmlcontent = oRequest.TxContent; // content of the editor HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); Boolean IsParagraph = false; Boolean IsTable = false; Telerik.Windows.Documents.Flow.Model.Paragraph blockparagraph = null; Telerik.Windows.Documents.Flow.Model.Table blocktable = null; RadFixedDocument RFD = new RadFixedDocument(); Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider pdfProvider = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider(); Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider FixpdfProvider = new Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider(); DocxFormatProvider docxProvider = new DocxFormatProvider(); byte[] pdfBytes = null; RadFlowDocument document = htmlProvider.Import(htmlcontent); // Header HTML if (oRequest.TxHeader == null) oRequest.TxHeader = "

Header

"; if (oRequest.TxFirstPageHeader == null) oRequest.TxFirstPageHeader = "

Frist page Header

"; if (oRequest.TxFooter == null) oRequest.TxFooter = "

Footer

"; document.Sections.First().HasDifferentFirstPageHeaderFooter = oRequest.HasDifferentFirstPageHeader; Header defaultHeader = document.Sections.First().Headers.Add(HeaderFooterType.Default); Header firstHeader = document.Sections.First().Headers.Add(HeaderFooterType.First); Footer defaultFooter = document.Sections.First().Footers.Add(); RadFlowDocument defaultHeaderDocument = htmlProvider.Import(oRequest.TxHeader); RadFlowDocument firstHeaderDocument = htmlProvider.Import(oRequest.TxFirstPageHeader); RadFlowDocument tempfooterDocument = htmlProvider.Import(oRequest.TxFooter); RadFlowDocumentEditor editor = new RadFlowDocumentEditor(document); foreach (var block in defaultHeaderDocument.Sections.First().Blocks) { IsParagraph = block is Telerik.Windows.Documents.Flow.Model.Paragraph; IsTable = block is Telerik.Windows.Documents.Flow.Model.Table; if (IsParagraph) { blockparagraph = block as Telerik.Windows.Documents.Flow.Model.Paragraph; Telerik.Windows.Documents.Flow.Model.Paragraph clonedParagraph = blockparagraph.Clone(document); defaultHeader.Blocks.Add(clonedParagraph); } else if (IsTable) { blocktable = block as Telerik.Windows.Documents.Flow.Model.Table; Telerik.Windows.Documents.Flow.Model.Table clonedTable = blocktable.Clone(document); defaultHeader.Blocks.Add(clonedTable); } } if (oRequest.HasDifferentFirstPageHeader) { foreach (var block in firstHeaderDocument.Sections.First().Blocks) { IsParagraph = block is Telerik.Windows.Documents.Flow.Model.Paragraph; IsTable = block is Telerik.Windows.Documents.Flow.Model.Table; if (IsParagraph) { blockparagraph = block as Telerik.Windows.Documents.Flow.Model.Paragraph; Telerik.Windows.Documents.Flow.Model.Paragraph clonedParagraph = blockparagraph.Clone(document); firstHeader.Blocks.Add(clonedParagraph); } else if (IsTable) { blocktable = block as Telerik.Windows.Documents.Flow.Model.Table; Telerik.Windows.Documents.Flow.Model.Table clonedTable = blocktable.Clone(document); firstHeader.Blocks.Add(clonedTable); } } } foreach (var block in tempfooterDocument.Sections.First().Blocks) { IsParagraph = block is Telerik.Windows.Documents.Flow.Model.Paragraph; IsTable = block is Telerik.Windows.Documents.Flow.Model.Table; if (IsParagraph) { blockparagraph = block as Telerik.Windows.Documents.Flow.Model.Paragraph; Telerik.Windows.Documents.Flow.Model.Paragraph clonedParagraph = blockparagraph.Clone(document); defaultFooter.Blocks.Add(clonedParagraph); } else if (IsTable) { blocktable = block as Telerik.Windows.Documents.Flow.Model.Table; Telerik.Windows.Documents.Flow.Model.Table clonedTable = blocktable.Clone(document); defaultFooter.Blocks.Add(clonedTable); } } if (oRequest.PaperHeight == 0 && oRequest.PaperWidth == 0) { oRequest.PaperHeight = 1122; oRequest.PaperWidth = 794; } //MemoryStream ms = new MemoryStream(pdfProvider.Export(document)); foreach (var item in document.Sections) { item.PageOrientation = Telerik.Windows.Documents.Model.PageOrientation.Landscape; if (oRequest.TxOrientation) { item.PageSize = new System.Windows.Size(oRequest.PaperHeight, oRequest.PaperWidth); } else if (!oRequest.TxOrientation) { item.PageSize = new System.Windows.Size(oRequest.PaperWidth, oRequest.PaperHeight); } //item.PageSize = Telerik.Windows.Documents.Model.PaperTypeConverter.ToSize(Telerik.Windows.Documents.Model.PaperTypes.A4); if (oRequest.LeftMargin > 0 && oRequest.RightMargin > 0) item.PageMargins = new Telerik.Windows.Documents.Primitives.Padding(oRequest.LeftMargin, 0, oRequest.RightMargin, 0); else if (oRequest.LeftMargin > 0 && oRequest.RightMargin == 0) item.PageMargins = new Telerik.Windows.Documents.Primitives.Padding(oRequest.LeftMargin, 0, 0, 0); else if (oRequest.RightMargin > 0 && oRequest.LeftMargin == 0) item.PageMargins = new Telerik.Windows.Documents.Primitives.Padding(0, 0, oRequest.RightMargin, 0); else item.PageMargins = new Telerik.Windows.Documents.Primitives.Padding(0, 0, 0, 0); if (oRequest.TopMargin > 0) item.HeaderTopMargin = oRequest.TopMargin; if (oRequest.BottomMargin > 0) item.FooterBottomMargin = oRequest.BottomMargin; if (oRequest.RightMargin == 0 && oRequest.LeftMargin == 0 && oRequest.TopMargin == 0 && oRequest.BottomMargin == 0) { item.PageMargins = new Telerik.Windows.Documents.Primitives.Padding(20, 20, 20, 20); } } var tables = document.EnumerateChildrenOfType(); int width = 100; foreach (var table in tables) { table.PreferredWidth = new Telerik.Windows.Documents.Flow.Model.Styles.TableWidthUnit(Telerik.Windows.Documents.Flow.Model.Styles.TableWidthUnitType.Auto, width); if (oRequest.BinaryType == "PDF") table.LayoutType = Telerik.Windows.Documents.Flow.Model.Styles.TableLayoutType.FixedWidth; //width -= 3; } RFD = pdfProvider.ExportToFixedDocument(document); //ms.Dispose(); editor.MoveToParagraphStart(defaultFooter.Blocks.AddParagraph()); //var codeFont = new Telerik.Windows.Documents.Spreadsheet.Model.ThemableFontFamily(new System.Windows.Media.FontFamily("MyriadPro")); //editor.CharacterFormatting.FontFamily.LocalValue = codeFont; editor.CharacterFormatting.FontSize.LocalValue = 12.0; var text = oRequest.TxOrientation == false ? " \t\t \t \t \t \t \t Page " : " \t \t \t \t \t \t \t \t \t \t \t Page "; editor.InsertText(text); editor.InsertField("PAGE", "1"); editor.InsertText(" of "); editor.InsertField("NUMPAGES", RFD.Pages.Count.ToString()); if (oRequest.BinaryType == "PDF") pdfBytes = pdfProvider.Export(document); else if (oRequest.BinaryType == "DOCX" || oRequest.BinaryType == "WORD") pdfBytes = docxProvider.Export(document); return pdfBytes; }