I'm using PdfSharp and can't find the class BeginBox where is it?
Asked Answered
A

2

17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Drawing;
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;

namespace Lightnings_Extractor
{
    class PDF
    {
        public PDF()
        {
            // Create a new PDF document
            PdfDocument document = new PdfDocument();
            document.Info.Title = "Created with PDFsharp";

            // Create an empty page
            PdfPage page = document.AddPage(); 
            // Get an XGraphics object for drawing
            XGraphics gfx = XGraphics.FromPdfPage(page); 
            // Create a font
            XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic); 
            // Draw the text
            gfx.DrawString("Hello, World!", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.Center); 
            // Save the document...
            const string filename = @"d:\HelloWorld.pdf";
            document.Save(filename);
            // ...and start a viewer.
            Process.Start(filename);
        }

        private void DrawImage(XGraphics gfx, int number)
        {
        }
    }
}

I'm taking the sample from this link: http://www.pdfsharp.net/wiki/Graphics-sample.ashx There is a sample there: Draw an image in original size

void DrawImage(XGraphics gfx, int number)
{
  BeginBox(gfx, number, "DrawImage (original)");

  XImage image = XImage.FromFile(jpegSamplePath);

  // Left position in point
  double x = (250 - image.PixelWidth * 72 / image.HorizontalResolution) / 2;
  gfx.DrawImage(image, x, 0);

  EndBox(gfx);
}

What am I missing here?

Arresting answered 16/12, 2012 at 21:56 Comment(0)
S
25

BeginBox and EndBox are helper methods defined at the bottom of the sample page.

Note that these methods are only to create the surrounding box and is probably not what you need to achieve the functionality you really want (in this case, to draw an image in original size). So I would just remove those two lines from the code.

public void BeginBox(XGraphics gfx, int number, string title)
{
  const int dEllipse = 15;
  XRect rect = new XRect(0, 20, 300, 200);
  if (number % 2 == 0)
    rect.X = 300 - 5;
  rect.Y = 40 + ((number - 1) / 2) * (200 - 5);
  rect.Inflate(-10, -10);
  XRect rect2 = rect;
  rect2.Offset(this.borderWidth, this.borderWidth);
  gfx.DrawRoundedRectangle(new XSolidBrush(this.shadowColor), rect2, new XSize(dEllipse + 8, dEllipse + 8));
  XLinearGradientBrush brush = new XLinearGradientBrush(rect, this.backColor, this.backColor2, XLinearGradientMode.Vertical);
  gfx.DrawRoundedRectangle(this.borderPen, brush, rect, new XSize(dEllipse, dEllipse));
  rect.Inflate(-5, -5);

  XFont font = new XFont("Verdana", 12, XFontStyle.Regular);
  gfx.DrawString(title, font, XBrushes.Navy, rect, XStringFormats.TopCenter);

  rect.Inflate(-10, -5);
  rect.Y += 20;
  rect.Height -= 20;

  this.state = gfx.Save();
  gfx.TranslateTransform(rect.X, rect.Y);
}

public void EndBox(XGraphics gfx)
{
  gfx.Restore(this.state);
}
Saucier answered 16/12, 2012 at 21:59 Comment(0)
T
0

You can find the complete solution here at PDFsharp-samples.

Both "BeginBox(XGraphics gfx, int number, string title)" & "EndBox(XGraphics gfx)" is implemented in the Base class and the Base class is inherited by all the other classes (LinesAndCurves, Shapes, Paths, Text, Images).

Trend answered 8/4, 2022 at 17:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.