Sha256: db56a78fde3c9e0d53b226c06efb7b584facb501c9677c565ee579c0b05736f0

Contents?: true

Size: 867 Bytes

Versions: 3

Compression:

Stored size: 867 Bytes

Contents

# coding: utf-8
# frozen_string_literal: true

class PDF::Reader
  # Small util class for detecting the orientation of a single PDF page. Accounts
  # for any page rotation that is in place.
  #
  #     OrientationDetector.new(:MediaBox => [0,0,612,792]).orientation
  #     => "portrait"
  #
  class OrientationDetector
    def initialize(attributes)
      @attributes = attributes
    end

    def orientation
      @orientation ||= detect_orientation
    end

    private

    def detect_orientation
      llx,lly,urx,ury = @attributes[:MediaBox]
      rotation        = @attributes[:Rotate].to_i
      width           = urx.to_i - llx.to_i
      height          = ury.to_i - lly.to_i
      if width > height
        (rotation % 180).zero? ? 'landscape' : 'portrait'
      else
        (rotation % 180).zero? ? 'portrait' : 'landscape'
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pdf-reader-2.4.0 lib/pdf/reader/orientation_detector.rb
pdf-reader-2.3.0 lib/pdf/reader/orientation_detector.rb
pdf-reader-2.2.1 lib/pdf/reader/orientation_detector.rb