2012-12-16 29 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) 
     { 
     } 
    } 
} 

tôi lấy mẫu từ liên kết này: http://www.pdfsharp.net/wiki/Graphics-sample.ashx Có một mẫu có: Vẽ một hình ảnh trong kích thước ban đầuTôi đang sử dụng PdfSharp và không thể tìm thấy lớp BeginBox ở đâu?

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

tôi đang thiếu gì ở đây?

Trả lời

11

BeginBoxEndBox là các phương pháp trợ giúp được xác định tại bottom of the sample page. Lưu ý rằng các phương pháp này chỉ để tạo hộp xung quanh và có lẽ không phải là những gì bạn cần để đạt được chức năng mà bạn thực sự muốn (trong trường hợp này, để vẽ một hình ảnh ở kích thước gốc). Vì vậy, tôi sẽ chỉ xóa hai dòng đó khỏi 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); 
} 
Các vấn đề liên quan