←Select platform

Bounds Property

Summary
Bounding rectangle of the object.
Syntax
C#
C++/CLI
Java
Python
public PDFRect Bounds { get; set; } 
public PDFRect getBounds(); 
public void setBounds( 
   PDFRect pDFRect 
); 
public: 
property PDFRect Bounds { 
   PDFRect get(); 
   void set (    PDFRect ); 
} 
Bounds # get and set (PDFObject) 

Property Value

A PDFRect structure that contain the bounding rectangle of the object in PDF units (1/72 of an inch and bottom left). Default value is an empty PDFRect with all values initialized to 0.

Remarks

The bounds of an object is read in PDF units, these are in 1/72 of an inch and a are bottom-left on the page. In other words, the 0,0 location is the bottom left corner of the page. To convert these units to inches or pixels in top-left coordinates, use the PDFDocumentPage.ConvertRect method as follows:

PDFRect coords = pdfObject.Bounds; 
// Convert to pixels: 
PDFRect pixels = page.ConvertRect(PDFCoordinateType.Pdf, PDFCoordinateType.Pixel, coords); 

For more information, refer to PDF Coordinate System.

If this object is a text item (ObjectType is PDFObjectType.Text), then the Bounds property contains the exact bounding box of the character in Code. This box does not include the internal or external leading spaces adding by the font used. To obtain this information, you must use the values of the TextProperties property.

If this object is an image item (ObjectType is PDFObjectType.Image), then the Bounds property contains the bounding box of the image in the PDF page. The example of PDFObject shows how to extract the image data from the PDF page.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Pdf; 
using Leadtools.WinForms; 
using Leadtools.Drawing; 
 
 
public void PDFObjectExample() 
{ 
   string pdfFileName = Path.Combine(LEAD_VARS.ImagesDir, @"Leadtools.pdf"); 
   string pngFileName = Path.Combine(LEAD_VARS.ImagesDir, @"LEAD_png.png"); 
 
   // Create a PDF document for file at 200 DPI 
   using (PDFDocument document = new PDFDocument(pdfFileName)) 
   { 
      document.Resolution = 200; 
 
      // Parse the objects of the first page 
      document.ParseDocumentStructure(PDFParseDocumentStructureOptions.Fonts); 
      document.ParsePages(PDFParsePagesOptions.Fonts | PDFParsePagesOptions.Objects, 1, 1); 
 
      // Get the page 
      PDFDocumentPage page = document.Pages[0]; 
 
      // Get the image of the page so we can use it to get the source image objects 
      using (RasterImage pageImage = document.GetPageImage(null, page.PageNumber)) 
      { 
         // Create the bitmap to draw the objects to 
         using (Bitmap btmp = new Bitmap(page.WidthPixels, page.HeightPixels)) 
         { 
            btmp.SetResolution(document.Resolution, document.Resolution); 
            using (Graphics g = Graphics.FromImage(btmp)) 
            { 
               g.Clear(Color.White); 
 
               // Render the objects 
 
               // Text is line at a time 
               LeadRect textRect = LeadRect.Empty; 
               double textFontHeight = 0; 
               StringBuilder textLine = new StringBuilder(); 
 
               foreach (PDFObject obj in page.Objects) 
               { 
                  switch (obj.ObjectType) 
                  { 
                     case PDFObjectType.Image: 
                        RenderImage(g, pageImage, page, obj); 
                        break; 
 
                     case PDFObjectType.Text: 
                        // Add the text code and rects together 
                        textLine.Append(obj.Code); 
                        PDFRect rc = page.ConvertRect(PDFCoordinateType.Pdf, PDFCoordinateType.Pixel, obj.Bounds); 
                        LeadRect objRect = LeadRect.FromLTRB((int)rc.Left, (int)rc.Top, (int)rc.Right, (int)rc.Bottom); 
                        if (textRect.IsEmpty) 
                        { 
                           textRect = objRect; 
                        } 
                        else 
                        { 
                           textRect = LeadRect.Union(textRect, objRect); 
                        } 
 
                        textFontHeight = Math.Max(textFontHeight, obj.TextProperties.FontHeight); 
 
                        // If this is the last object in a line, render it 
                        if (obj.TextProperties.IsEndOfLine) 
                        { 
                           RenderText(g, document, page, textLine.ToString(), textRect, obj.TextProperties, textFontHeight); 
 
                           textLine = new StringBuilder(); 
                           textRect = LeadRect.Empty; 
                        } 
                        break; 
                  } 
               } 
            } 
 
            btmp.Save(pngFileName, System.Drawing.Imaging.ImageFormat.Png); 
         } 
      } 
   } 
} 
 
private static void RenderImage(Graphics g, RasterImage pageImage, PDFDocumentPage page, PDFObject obj) 
{ 
   LeadRect destRect = new LeadRect(0, 0, page.WidthPixels, page.HeightPixels); 
 
   // Get the object coordinates in pixels 
   PDFRect rc = page.ConvertRect(PDFCoordinateType.Pdf, PDFCoordinateType.Pixel, obj.Bounds); 
   LeadRect destClipRect = LeadRect.FromLTRB((int)rc.Left, (int)rc.Top, (int)rc.Right, (int)rc.Bottom); 
 
   // Draw from the page image to the destination graphics 
   RasterPaintProperties props = RasterPaintProperties.Default; 
   props.PaintEngine = RasterPaintEngine.GdiPlus; 
   RasterImagePainter.Paint( 
      pageImage, 
      g, 
      LeadRect.Empty, 
      LeadRect.Empty, 
      destRect, 
      destClipRect, 
      props); 
} 
 
private static void RenderText(Graphics g, PDFDocument document, PDFDocumentPage page, string text, LeadRect textRect, PDFTextProperties textProperties, double textFontHeight) 
{ 
   // Create the font 
 
   // Find it in the fonts collection 
   string faceName = null; 
 
   if (document.Fonts != null && textProperties.FontIndex < document.Fonts.Count) 
   { 
      PDFFont font = document.Fonts[textProperties.FontIndex]; 
      faceName = font.FaceName; 
   } 
 
   if (string.IsNullOrEmpty(faceName)) 
   { 
      // Could be an embedded font, use Arial 
      faceName = "Arial"; 
   } 
 
   using (Font f = new Font(faceName, (float)textFontHeight * 72 / g.DpiY)) 
   { 
      using (Brush brush = new SolidBrush(RasterColorConverter.ToColor(textProperties.Color))) 
      { 
         Rectangle rect = new Rectangle(textRect.X, textRect.Y, textRect.Width, textRect.Height); 
 
         using (StringFormat sf = new StringFormat()) 
         { 
            sf.Alignment = StringAlignment.Center; 
            sf.LineAlignment = StringAlignment.Center; 
            sf.FormatFlags |= StringFormatFlags.NoClip | StringFormatFlags.NoWrap; 
 
            g.DrawString(text, f, brush, rect, sf); 
         } 
      } 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.7.10
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Pdf Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.