private void Add(PdfDocument pdfDocument, Core.IPage page) { // create A4 page with landscape orientation PdfPage pdfPage = pdfDocument.AddPage(); pdfPage.Size = PageSize.A4; pdfPage.Orientation = PageOrientation.Landscape; using (XGraphics gfx = XGraphics.FromPdfPage(pdfPage)) { // calculate x and y page scale factors double scaleX = pdfPage.Width.Value / page.Template.Width; double scaleY = pdfPage.Height.Value / page.Template.Height; double scale = Math.Min(scaleX, scaleY); // set scaling function ScaleToPage = (value) => value * scale; // set renderer database Database = page.Database; // draw block contents to pdf graphics RenderPage(gfx, page); // reset renderer database Database = null; } }
public void Create(string path, Core.IPage page) { using (var pdfDocument = new PdfDocument()) { Add(pdfDocument, page); pdfDocument.Save(path); } }
private void RenderPage(object gfx, Core.IPage page) { RenderTemplate(gfx, page.Template); RenderLayer(gfx, page.Shapes); RenderLayer(gfx, page.Blocks); if (EnablePinRendering) { RenderLayer(gfx, page.Pins); } RenderLayer(gfx, page.Wires); }