Class PDFPage

java.lang.Object
org.loboevolution.pdfview.PDFPage

public class PDFPage extends Object
A PDFPage encapsulates the parsed commands required to render a single page from a PDFFile. The PDFPage is not itself drawable; instead, create a PDFImage to display something on the screen.

This file also contains all of the PDFCmd commands that might be a part of the command stream in a PDFPage. They probably should be inner classes of PDFPage instead of separate non-public classes.

Author Mike Wessler

  • Field Details

    • renderers

      public final Map<ImageInfo,WeakReference<?>> renderers
      a map from image info to weak references to parsers that are active
  • Constructor Details

    • PDFPage

      public PDFPage(Rectangle2D bbox, int rotation)
      create a PDFPage with dimensions in bbox and rotation.
      Parameters:
      bbox - a Rectangle2D object.
      rotation - a Integer object.
    • PDFPage

      public PDFPage(int pageNumber, Rectangle2D bbox, int rote, Cache cache)
      create a PDFPage with dimensions in bbox and rotation.
      Parameters:
      pageNumber - Integer object.
      bbox - a Rectangle2D object.
      rote - Integer object.
      cache - a Cache object.
  • Method Details

    • createImageCmd

      public static org.loboevolution.pdfview.PDFImageCmd createImageCmd(PDFImage image)

      createImageCmd.

      Parameters:
      image - a PDFImage object.
      Returns:
      a PDFImageCmd object.
    • createPushCmd

      public static org.loboevolution.pdfview.PDFPushCmd createPushCmd()

      createPushCmd.

      Returns:
      a PDFPushCmd object.
    • createPopCmd

      public static org.loboevolution.pdfview.PDFPopCmd createPopCmd()

      createPopCmd.

      Returns:
      a PDFPopCmd object.
    • createXFormCmd

      public static org.loboevolution.pdfview.PDFXformCmd createXFormCmd(AffineTransform at)

      createXFormCmd.

      Parameters:
      at - a AffineTransform object.
      Returns:
      a PDFXformCmd object.
    • getUnstretchedSize

      public Dimension getUnstretchedSize(int widthSize, int heightSize, Rectangle2D clip)
      Get the width and height of this image in the correct aspect ratio. The image returned will have at least one of the width and height values identical to those requested. The other dimension may be smaller, so as to keep the aspect ratio the same as in the original page.
      Parameters:
      widthSize - the maximum width of the image
      heightSize - the maximum height of the image
      clip - the region in page space of the page to display. It may be null, in which the page's defined crop box will be used.
      Returns:
      a Dimension object.
    • getImage

      public Image getImage(int width, int height, Rectangle2D clip, ImageObserver observer)
      Get an image producer which can be used to draw the image represented by this PDFPage. The ImageProducer is guaranteed to stay in sync with the PDFPage as commands are added to it.

      The image will contain the section of the page specified by the clip, scaled to fit in the area given by width and height.

      Parameters:
      width - the width of the image to be produced
      height - the height of the image to be produced
      clip - the region in page space of the entire page to display
      observer - an image observer who will be notified when the image changes, or null
      Returns:
      an Image that contains the PDF data
    • getImage

      public Image getImage(int width, int height, Rectangle2D clip, ImageObserver observer, boolean drawbg, boolean wait)
      Get an image producer which can be used to draw the image represented by this PDFPage. The ImageProducer is guaranteed to stay in sync with the PDFPage as commands are added to it.

      The image will contain the section of the page specified by the clip, scaled to fit in the area given by width and height.

      Parameters:
      width - the width of the image to be produced
      height - the height of the image to be produced
      clip - the region in page space of the entire page to display
      observer - an image observer who will be notified when the image changes, or null
      drawbg - if true, put a white background on the image. If not, draw no color (alpha 0) for the background.
      wait - if true, do not return until this image is fully rendered.
      Returns:
      an Image that contains the PDF data
    • getAspectRatio

      public float getAspectRatio()
      get the aspect ratio of the correctly oriented page.
      Returns:
      the width/height aspect ratio of the page
    • getWidth

      public float getWidth()
      get the width of this page, after rotation
      Returns:
      a float.
    • getHeight

      public float getHeight()
      get the height of this page, after rotation
      Returns:
      a float.
    • getInitialTransform

      public AffineTransform getInitialTransform(int width, int height, Rectangle2D clip)
      Get the initial transform to map from a specified clip rectangle in pdf coordinates to an image of the specfied width and height in device coordinates
      Parameters:
      width - the width of the image
      height - the height of the image
      clip - the desired clip rectangle (in PDF space) or null to use the page's bounding box
      Returns:
      a AffineTransform object.
    • getCommandCount

      public int getCommandCount()
      get the current number of commands for this page
      Returns:
      a Integer object.
    • getCommand

      public PDFCmd getCommand(int index)
      get the command at a given index
      Parameters:
      index - a Integer object.
      Returns:
      a PDFCmd object.
    • getCommands

      public List<PDFCmd> getCommands(int startIndex)
      get all the commands in the current page starting at the given index
      Parameters:
      startIndex - a Integer object.
      Returns:
      a List object.
    • getCommands

      public List<PDFCmd> getCommands(int startIndex, int endIndex)

      Getter for the field commands.

      Parameters:
      startIndex - a Integer object.
      endIndex - a Integer object.
      Returns:
      a List object.
    • findLastCommand

      public PDFCmd findLastCommand(Class<?> cls)

      findLastCommand.

      Parameters:
      cls - a Class object.
      Returns:
      a PDFCmd object.
    • addCommand

      public void addCommand(PDFCmd cmd)
      Add a single command to the page list.
      Parameters:
      cmd - a PDFCmd object.
    • addCommands

      public void addCommands(PDFPage page)
      add a collection of commands to the page list. This is probably invoked as the result of an XObject 'do' command, or through a type 3 font.
      Parameters:
      page - a PDFPage object.
    • addCommands

      public void addCommands(PDFPage page, AffineTransform extra)
      add a collection of commands to the page list. This is probably invoked as the result of an XObject 'do' command, or through a type 3 font.
      Parameters:
      page - the source of other commands. It MUST be finished.
      extra - a transform to perform before adding the commands. If null, no extra transform will be added.
    • clearCommands

      public void clearCommands()
      Clear all commands off the current page
    • waitForFinish

      public void waitForFinish() throws InterruptedException
      wait for finish
      Throws:
      InterruptedException - if any.
    • stop

      public void stop(int width, int height, Rectangle2D clip)
      Stop the rendering of a particular image on this page
      Parameters:
      width - a Integer object.
      height - a Integer object.
      clip - a Rectangle2D object.
    • finish

      public void finish()
      The entire page is done. This must only be invoked once. All observers will be notified.
    • addPush

      public void addPush()
      push the graphics state
    • addPop

      public void addPop()
      pop the graphics state
    • addXform

      public void addXform(AffineTransform at)
      concatenate a transform to the graphics state
      Parameters:
      at - a AffineTransform object.
    • addStrokeWidth

      public org.loboevolution.pdfview.PDFChangeStrokeCmd addStrokeWidth(float w)
      set the stroke width
      Parameters:
      w - the width of the stroke
      Returns:
      a PDFChangeStrokeCmd object.
    • addEndCap

      public void addEndCap(int capstyle)
      set the end cap style
      Parameters:
      capstyle - the cap style: 0 = BUTT, 1 = ROUND, 2 = SQUARE
    • addLineJoin

      public void addLineJoin(int joinstyle)
      set the line join style
      Parameters:
      joinstyle - the join style: 0 = MITER, 1 = ROUND, 2 = BEVEL
    • addMiterLimit

      public void addMiterLimit(float limit)
      set the miter limit
      Parameters:
      limit - a float.
    • addDash

      public void addDash(float[] dashary, float phase)
      set the dash style
      Parameters:
      dashary - the array of on-off lengths
      phase - offset of the array at the start of the line drawing
    • addPath

      public void addPath(GeneralPath path, int style, boolean autoAdjustStroke)
      set the current path
      Parameters:
      path - the path
      style - the style: PDFShapeCmd.STROKE, PDFShapeCmd.FILL,
      autoAdjustStroke - PDFShapeCmd.BOTH, PDFShapeCmd.CLIP, or some combination.
    • addShadeCommand

      public void addShadeCommand(PDFPaint p, Rectangle2D box)

      addShadeCommand.

      Parameters:
      p - a PDFPaint object.
      box - a Rectangle2D object.
    • addFillPaint

      public void addFillPaint(PDFPaint p)
      set the fill paint
      Parameters:
      p - a PDFPaint object.
    • addStrokePaint

      public void addStrokePaint(PDFPaint p)
      set the stroke paint
      Parameters:
      p - a PDFPaint object.
    • addFillAlpha

      public void addFillAlpha(float a)
      set the fill alpha
      Parameters:
      a - a float.
    • addStrokeAlpha

      public void addStrokeAlpha(float a)
      set the stroke alpha
      Parameters:
      a - a float.
    • addImage

      public void addImage(PDFImage image)
      draw an image
      Parameters:
      image - the image to draw
    • updateImages

      public void updateImages()
      Notify all images we know about that a command has been added
    • getAnnots

      Get a list of all annotations of the given type for this PDF page
      Parameters:
      type - a PDFAnnotation.ANNOTATION_TYPE object.
      Returns:
      List of PDFAnnotation object.
    • addAnnotations

      public void addAnnotations()

      addAnnotations.