def orientation(force = nil, clockwise = true)
      a = page_size
      return (a[2] - a[0] > a[3] - a[1]) ? :landscape : :portrait unless force
      unless orientation == force || (a[2] - a[0] == a[3] - a[1])
        self[:Rotate] = 0
        clockwise ? rotate_right : rotate_left
      end
      self
    end
def orientation(force = nil, clockwise = true)
      a = page_size
      return (a[2] - a[0] > a[3] - a[1]) ? :landscape : :portrait unless force
      unless orientation == force || (a[2] - a[0] == a[3] - a[1])
        self[:Rotate] = 0
        clockwise ? rotate_right : rotate_left
      end
      self
    end
get or set (by clockwise rotation) the page's data orientation.

 note that the data's orientation is the way data is oriented on the page.
 The display orientati0n (which might different) is controlled by the `:Rotate` property. see {#fix_orientation} for more details.

 accepts one optional parameter:
 force:: to get the orientation, pass nil. to set the orientatiom, set fource to either :portrait or :landscape. defaults to nil (get orientation).
 clockwise:: sets the rotation directions. defaults to true (clockwise rotation).

 returns the current orientation (:portrait or :landscape) if used to get the orientation.
 otherwise, if used to set the orientation, returns the page object to allow method chaining.

 * Notice: a square page always returns the :portrait value and is ignored when trying to set the orientation.