public override void RenderPage(PdfSharp.Drawing.XGraphics gfx) { base.RenderPage(gfx); //Document doc = new Document(); //Section sec = doc.AddSection(); //Paragraph para = sec.AddParagraph("MigraDoc Paragraph"); //para.Format.Borders.Color = Colors.Gold; //MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc); //docRenderer.PrepareDocument(); //docRenderer.RenderObject(gfx, XUnit.FromCentimeter(10), XUnit.FromCentimeter(11), "5cm", para); }
/// <summary> /// Converts a PolyQuadraticBezierSegment into a PolyLineSegment because I currently have no muse to calculate /// the correct Bézier curves. /// </summary> public static PdfSharp.Xps.XpsModel.PolyLineSegment FlattenSegment(PdfSharp.Xps.XpsModel.Point startPoint, PdfSharp.Xps.XpsModel.PolyQuadraticBezierSegment seg) { PathGeometry geo = new PathGeometry(); PathFigure fig = new PathFigure(); geo.Figures.Add(fig); fig.StartPoint = new Point(startPoint.X, startPoint.Y); int count = seg.Points.Count; Point[] points = new Point[count]; for (int idx = 0; idx < count - 1; idx += 2) { QuadraticBezierSegment qbseg = new QuadraticBezierSegment( new Point(seg.Points[idx].X, seg.Points[idx].Y), new Point(seg.Points[idx + 1].X, seg.Points[idx + 1].Y), seg.IsStroked); fig.Segments.Add(qbseg); } geo = geo.GetFlattenedPathGeometry(); fig = geo.Figures[0]; PolyLineSegment lineSeg = (PolyLineSegment)fig.Segments[0]; PdfSharp.Xps.XpsModel.PolyLineSegment resultSeg = new PdfSharp.Xps.XpsModel.PolyLineSegment(); foreach (Point point in lineSeg.Points) resultSeg.Points.Add(new PdfSharp.Xps.XpsModel.Point(point.X, point.Y)); return resultSeg; }
/// <summary> /// Converts an ArcSegment into a PolyLineSegment because I currently have no muse to calculate /// the correct Bézier curves. /// </summary> public static PdfSharp.Xps.XpsModel.PolyLineSegment FlattenSegment(PdfSharp.Xps.XpsModel.Point startPoint, PdfSharp.Xps.XpsModel.ArcSegment seg) { PathGeometry geo = new PathGeometry(); PathFigure fig = new PathFigure(); geo.Figures.Add(fig); fig.StartPoint = new Point(startPoint.X, startPoint.Y); ArcSegment aseg = new ArcSegment(new Point(seg.Point.X, seg.Point.Y), new Size(seg.Size.Width, seg.Size.Height), seg.RotationAngle, seg.IsLargeArc, (SweepDirection)seg.SweepDirection, seg.IsStroked); fig.Segments.Add(aseg); geo = geo.GetFlattenedPathGeometry(); fig = geo.Figures[0]; //PolyLineSegment lineSeg = (PolyLineSegment)fig.Segments[0]; PdfSharp.Xps.XpsModel.PolyLineSegment resultSeg = new PdfSharp.Xps.XpsModel.PolyLineSegment(); int count = fig.Segments.Count; for (int idx = 0; idx < count; idx++) { PathSegment pathSeg = fig.Segments[idx]; if (pathSeg is PolyLineSegment) { PolyLineSegment plseg = (PolyLineSegment)pathSeg; foreach (Point point in plseg.Points) resultSeg.Points.Add(new PdfSharp.Xps.XpsModel.Point(point.X, point.Y)); } else if (pathSeg is LineSegment) { LineSegment lseg = (LineSegment)pathSeg; resultSeg.Points.Add(new PdfSharp.Xps.XpsModel.Point(lseg.Point.X, lseg.Point.Y)); } else { Debugger.Break(); } } return resultSeg; }
public static void DrawSubSchedule(PdfSharp.Drawing.XGraphics Graphics, WeekData Week) { var basicPen = XPens.Black; var boldPen = new XPen(XColors.Black, 2); var font = new XFont("Times New Roman", 14, XFontStyle.Bold); var schedule = GenerateSubSchedule(Week); var width = Graphics.PageSize.Width; var height = Graphics.PageSize.Height; var horizontalMargin = 20; var horizontalSpan = width - (horizontalMargin * 2); var columnWidth = horizontalSpan / 8; var verticalMargin = 20; var topMargin = 50; var mainVerticalSpan = height - topMargin - (verticalMargin * 2); var rowCount = schedule.Subs.Count + schedule.OpenRoutes.Max(l => l.Count); var rowHeight = mainVerticalSpan / rowCount; if (rowHeight > 20) rowHeight = 20; var realBottom = verticalMargin + topMargin + (rowHeight * rowCount); var fontMargin = 5; // Draw grid lines for (double x = horizontalMargin; x <= width; x += columnWidth) Graphics.DrawLine(boldPen, x, verticalMargin, x, realBottom); Graphics.DrawLine(basicPen, horizontalMargin, verticalMargin, width - horizontalMargin, verticalMargin); for (double y = verticalMargin + topMargin; y <= realBottom; y += rowHeight) Graphics.DrawLine(basicPen, horizontalMargin, y, width - horizontalMargin, y); // Draw info block at top-left Graphics.DrawString("Relief Carrier", font, XBrushes.Black, new XRect(horizontalMargin, verticalMargin, columnWidth, topMargin), XStringFormats.TopCenter); Graphics.DrawString("Schedule", font, XBrushes.Black, new XRect(horizontalMargin, verticalMargin + 16, columnWidth, topMargin), XStringFormats.TopCenter); Graphics.DrawString(String.Format("PP {0} WK {1}", Week.PayPeriod, Week.Week), font, XBrushes.Black, new XRect(horizontalMargin, verticalMargin, columnWidth, topMargin), XStringFormats.BottomCenter); // Draw Day Headers for (var day = 0; day < 7; ++day) { Graphics.DrawString(LongDayNames[day], font, XBrushes.Black, new XRect(horizontalMargin + (columnWidth * (day + 1)), verticalMargin, columnWidth, topMargin), XStringFormats.TopCenter); if (Week.DailySchedules[day].IsHoliday) Graphics.DrawString("HOLIDAY", font, XBrushes.Black, new XRect(horizontalMargin + (columnWidth * (day + 1)), verticalMargin, columnWidth, topMargin), XStringFormats.Center); Graphics.DrawString((Week.SaturdayDate + TimeSpan.FromDays(day)).ToShortDateString(), font, XBrushes.Black, new XRect(horizontalMargin + (columnWidth * (day + 1)), verticalMargin, columnWidth, topMargin), XStringFormats.BottomCenter); } // Draw actual sub schedule. var row = 0; foreach (var sub in schedule.Subs) { Graphics.DrawString(sub.Name, font, XBrushes.Black, new XRect(fontMargin + horizontalMargin, verticalMargin + topMargin + (row * rowHeight), columnWidth, rowHeight), XStringFormats.Center); for (var c = 0; c < 7; ++c) if (!String.IsNullOrEmpty(sub.Schedule[c])) Graphics.DrawString(sub.Schedule[c], font, XBrushes.Black, new XRect(fontMargin + horizontalMargin + (columnWidth * (c + 1)), verticalMargin + topMargin + (row * rowHeight), columnWidth, rowHeight), XStringFormats.CenterLeft); row += 1; } // Draw open routes at bottom of schedule. for (var day = 0; day < 7; ++day) { var top = row; foreach (var entry in schedule.OpenRoutes[day]) { Graphics.DrawString(entry, font, XBrushes.Black, new XRect(fontMargin + horizontalMargin + (columnWidth * (day + 1)), verticalMargin + topMargin + (top * rowHeight), columnWidth, rowHeight), XStringFormats.CenterLeft); top += 1; } } }
internal override void WriteObject(PdfSharp.Pdf.IO.PdfWriter writer) { // Implementet because it must be overridden. writer.WriteRaw(" null "); }
public void WriteTo(PdfSharp.Pdf.PdfDocument outputPdfDocument) { using (MemoryStream stream = new MemoryStream()) { GeneratePdf(stream); PdfSharp.Pdf.PdfDocument inputDocument = CompatiblePdfReader.Open(stream); foreach (PdfSharp.Pdf.PdfPage page in inputDocument.Pages) { outputPdfDocument.AddPage(page); } } }
private void AddTextToPdf(string text, PdfSharp.Drawing.XFont xfont, PdfSharp.Drawing.XBrush xBrush, PdfSharp.Drawing.XRect rect) { rect.X = _horizontalePosition + rect.X; rect.Y = _verticalPosition + rect.Y; _textformater.DrawString(text, xfont, xBrush, rect, PdfSharp.Drawing.XStringFormats.TopLeft); _verticalPosition = rect.Y + rect.Height; _isPageEmpty = false; }
/// <summary> /// Draws the page title and footer. /// </summary> private void DrawTitle(PdfSharp.Pdf.PdfPage page, XGraphics gfx, string title) { XRect rect = new XRect(new XPoint(), gfx.PageSize); rect.Inflate(-10, -15); XFont font = new XFont("Verdana", 14, XFontStyle.Bold); gfx.DrawString(title, font, XBrushes.MidnightBlue, rect, XStringFormats.TopCenter); //_document.Outlines.Add(title, page, true); }