public byte[] ToPdf() { var doc = new PdfDocument(); doc.Info.Author = Author ?? string.Empty; doc.Info.Title = Title ?? string.Empty; doc.Info.Creator = "Scriber " + typeof(Document).Assembly.GetName().Version?.ToString(); var renderContext = new PdfDrawingContext { Document = doc }; foreach (var page in Pages) { if (page is MeasuredDocumentPage) { var pdfPage = doc.AddPage(); var graphics = XGraphics.FromPdfPage(pdfPage); renderContext.Graphics = graphics; } page.OnRender(renderContext); } if (doc.PageCount == 0) { doc.AddPage(); } Outline.AddPdf(Outlines, doc); using var ms = new MemoryStream(); doc.Save(ms); return(ms.ToArray()); }
public static void ExportToPDF(this IRenderer renderer, String title, Stream stream) { var root = renderer.SkiaTree.Root; PdfDocument document = new PdfDocument(); document.Info.Title = title; PdfPage page = document.AddPage(); page.Size = PdfSharp.PageSize.A4; XGraphics gfx = XGraphics.FromPdfPage(page); PdfDrawingContext context = new PdfDrawingContext(gfx); context.Rendering += (sender, bounds) => { if (bounds.Bottom > page.Height.Value * (double)document.PageCount && bounds.Height < page.Height) { page = document.AddPage(); page.Size = PdfSharp.PageSize.A4; gfx.Dispose(); gfx = XGraphics.FromPdfPage(page); context.Reset(gfx, (page.Height.Value * (document.PageCount - 1))); } }; root.Render(context, root.Bounds, root.Bounds, 1); document.Save(stream, false); gfx.Dispose(); }
public byte[] ToPdf() { var doc = new PdfDocument(); var renderContext = new PdfDrawingContext(); foreach (var page in Pages) { var pdfPage = doc.AddPage(); var graphics = XGraphics.FromPdfPage(pdfPage); renderContext.Graphics = graphics; page.OnRender(renderContext); } using var ms = new MemoryStream(); doc.Save(ms); return(ms.ToArray()); }