2012-12-16 15 views
6
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) 
     { 
     } 
    } 
} 

bu bağlantıdan örnek alıyorum: http://www.pdfsharp.net/wiki/Graphics-sample.ashx orada örnek bir yok: orijinal boyutunda Bir resim çizinPdfSharp kullanıyorum ve nerede BeginBox sınıfını bulamıyorum?

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); 
} 

Burada ne eksik?

cevap

11

BeginBox ve EndBox, bottom of the sample page numaralı belgede tanımlanan yardımcı yöntemlerdir.

Bu yöntemlerin yalnızca çevreleyen kutuyu oluşturduğunu ve gerçekten istediğiniz işlevi elde etmek için ihtiyacınız olan şey olmadığını unutmayın (bu durumda, orijinal boyutta bir resim çizmek için). Bu yüzden bu iki satırı koddan çıkarırım.

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); 
}