Home arrow Samples arrow Two Pages on One Make Text BiggerMake Text SmallerReset Text Size
Preview

This WinForms program shows how to draw text and graphic with the same code in a preview window or on a PDF page. The following form uses the PDFsharp preview control to show some text and graphic. By pressing the Create PDF button the content is rendered to a PDF document.

PDFsharp Preview Window
PDFsharp Preview Window

The following code produces the output shown in the preview.

class Renderer
{
  /// <summary>
  /// Renders the content of the page.
  /// </summary>
  public void Render(XGraphics gfx)
  {
    XRect rect;
    XPen pen;
    double x = 50, y = 100;
    XFont fontH1 = new XFont("Times", 18, XFontStyle.Bold);
    XFont font = new XFont("Times", 12);
    XFont fontItalic = new XFont("Times", 12, XFontStyle.BoldItalic);
    double ls = font.GetHeight(gfx);
 
    // Draw some text
    gfx.DrawString("Create PDF on the fly with PDFsharp",
        fontH1, XBrushes.Black, x, x);
    gfx.DrawString("With PDFsharp you can use the same code to draw graphic, " +
        "text and images on different targets.", font, XBrushes.Black, x, y);
    y += ls;
    gfx.DrawString("The object used for drawing is the XGraphics object.", 
        font, XBrushes.Black, x, y);
    y += 2 * ls;
 
    // Draw an arc
    pen = new XPen(XColors.Red, 4);
    pen.DashStyle = XDashStyle.Dash;
    gfx.DrawArc(pen, x + 20, y, 100, 60, 150, 120);
 
    // Draw a star
    XGraphicsState gs = gfx.Save();
    gfx.TranslateTransform(x + 140, y + 30);
    for (int idx = 0; idx < 360; idx += 10)
    {
      gfx.RotateTransform(10);
      gfx.DrawLine(XPens.DarkGreen, 0, 0, 30, 0);
    }
    gfx.Restore(gs);
 
    // Draw a rounded rectangle
    rect = new XRect(x + 230, y, 100, 60);
    pen = new XPen(XColors.DarkBlue, 2.5);
    XColor color1 = XColor.FromKnownColor(KnownColor.DarkBlue);
    XColor color2 = XColors.Red;
    XLinearGradientBrush lbrush = new XLinearGradientBrush(rect, color1, color2, 
      XLinearGradientMode.Vertical);
    gfx.DrawRoundedRectangle(pen, lbrush, rect, new XSize(10, 10));
    
    // Draw a pie
    pen = new XPen(XColors.DarkOrange, 1.5);
    pen.DashStyle = XDashStyle.Dot;
    gfx.DrawPie(pen, XBrushes.Blue, x + 360, y, 100, 60, -130, 135);
    
    // Draw some more text
    y += 60 + 2 * ls;
    gfx.DrawString("With XGraphics you can draw on a PDF page as well as " +
        "on any System.Drawing.Graphics object.", font, XBrushes.Black, x, y);
    y += ls * 1.1;
    gfx.DrawString("Use the same code to", font, XBrushes.Black, x, y);
    x += 10;
    y += ls * 1.1;
    gfx.DrawString("• draw on a newly created PDF page", font, XBrushes.Black, x, y);
    y += ls;
    gfx.DrawString("• draw above or beneath of the content of an existing PDF page", 
        font, XBrushes.Black, x, y);
    y += ls;
    gfx.DrawString("• draw in a window", font, XBrushes.Black, x, y);
    y += ls;
    gfx.DrawString("• draw on a printer", font, XBrushes.Black, x, y);
    y += ls;
    gfx.DrawString("• draw in a bitmap image", font, XBrushes.Black, x, y);
    x -= 10;
    y += ls * 1.1;
    gfx.DrawString("You can also import an existing PDF page and use it like " +
        "an image, e.g. draw it on another PDF page.", font, XBrushes.Black, x, y);
    y += ls * 1.1 * 2;
    gfx.DrawString("Imported PDF pages are neither drawn nor printed; create a " + 
        "PDF file to see or print them!", fontItalic, XBrushes.Firebrick, x, y);
    y += ls * 1.1;
    gfx.DrawString("Below this text is a PDF form that will be visible when " + 
        "viewed or printed with a PDF viewer.", fontItalic, XBrushes.Firebrick, x, y);
    y += ls * 1.1;
    XGraphicsState state = gfx.Save();
    XRect rcImage = new XRect(100, y, 100, 100 * Math.Sqrt(2));
    gfx.DrawRectangle(XBrushes.Snow, rcImage);
    gfx.DrawImage(XPdfForm.FromFile("../../../../PDFs/SomeLayout.pdf"), rcImage);
    gfx.Restore(state);
  }
}

The essential point is that the output renders in the preview as well as on a PDF page. With PDFsharp you can write an application that draws its output in a window, on a printer or on a PDF document.

See the PDF file created by this sample: Preview.pdf (65 kB)

 
< Prev   Next >
New! We no longer maintain this site. Visit the new PDFsharp and MigraDoc Foundation Homepage. © 2009 empira Software GmbH | Impressum | Created with Joomla!