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);
    }
Example #2
0
 /// <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;
 }
Example #3
0
 /// <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;
 }
Example #4
0
        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;
                }
            }
        }
Example #5
0
 internal override void WriteObject(PdfSharp.Pdf.IO.PdfWriter writer)
 {
   // Implementet because it must be overridden.
   writer.WriteRaw(" null ");
 }
Example #6
0
 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);
         }
     }
 }
Example #7
0
 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;
 }
Example #8
0
        /// <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);
        }