text: (function() {
  
    /*
    PDFPage - represents a single page in the PDF document
    By Devon Govett
    */
  
    var PDFPage;
  
    PDFPage = (function() {
      var DEFAULT_MARGINS, SIZES;
  
      function PDFPage(document, options) {
        var dimensions;
        var _this = this;
        this.document = document;
        if (options == null) options = {};
        this.size = options.size || 'letter';
        this.layout = options.layout || 'portrait';
        if (typeof options.margin === 'number') {
          this.margins = {
            top: options.margin,
            left: options.margin,
            bottom: options.margin,
            right: options.margin
          };
        } else {
          this.margins = options.margins || DEFAULT_MARGINS;
        }
        dimensions = Array.isArray(this.size) ? this.size : SIZES[this.size.toUpperCase()];
        this.width = dimensions[this.layout === 'portrait' ? 0 : 1];
        this.height = dimensions[this.layout === 'portrait' ? 1 : 0];
        this.content = this.document.ref();
        this.dictionary = this.document.ref({
          Type: 'Page',
          Parent: this.document.store.pages,
          MediaBox: [0, 0, this.width, this.height],
          Contents: this.content
        });
        this.dictionary.data['Resources'] = this.document.ref({
          ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']
        });
        this.resources = this.dictionary.data['Resources'].data;
        Object.defineProperties(this, {
          fonts: {
            get: function() {
              var _base, _ref;
              return (_ref = (_base = _this.resources)['Font']) != null ? _ref : _base['Font'] = {};
            }
          },
          xobjects: {
            get: function() {
              var _base, _ref;
              return (_ref = (_base = _this.resources)['XObject']) != null ? _ref : _base['XObject'] = {};
            }
          },
          ext_gstates: {
            get: function() {
              var _base, _ref;
              return (_ref = (_base = _this.resources)['ExtGState']) != null ? _ref : _base['ExtGState'] = {};
            }
          },
          patterns: {
            get: function() {
              var _base, _ref;
              return (_ref = (_base = _this.resources)['Pattern']) != null ? _ref : _base['Pattern'] = {};
            }
          },
          annotations: {
            get: function() {
              var _base, _ref;
              return (_ref = (_base = _this.dictionary.data)['Annots']) != null ? _ref : _base['Annots'] = [];
            }
          }
        });
      }
  
      PDFPage.prototype.maxY = function() {
        return this.height - this.margins.bottom;
      };
  
      PDFPage.prototype.finalize = function(fn) {
        return this.content.finalize(this.document.compress, fn);
      };
  
      DEFAULT_MARGINS = {
        top: 72,
        left: 72,
        bottom: 72,
        right: 72
      };
  
      SIZES = {
        '4A0': [4767.87, 6740.79],
        '2A0': [3370.39, 4767.87],
        A0: [2383.94, 3370.39],
        A1: [1683.78, 2383.94],
        A2: [1190.55, 1683.78],
        A3: [841.89, 1190.55],
        A4: [595.28, 841.89],
        A5: [419.53, 595.28],
        A6: [297.64, 419.53],
        A7: [209.76, 297.64],
        A8: [147.40, 209.76],
        A9: [104.88, 147.40],
        A10: [73.70, 104.88],
        B0: [2834.65, 4008.19],
        B1: [2004.09, 2834.65],
        B2: [1417.32, 2004.09],
        B3: [1000.63, 1417.32],
        B4: [708.66, 1000.63],
        B5: [498.90, 708.66],
        B6: [354.33, 498.90],
        B7: [249.45, 354.33],
        B8: [175.75, 249.45],
        B9: [124.72, 175.75],
        B10: [87.87, 124.72],
        C0: [2599.37, 3676.54],
        C1: [1836.85, 2599.37],
        C2: [1298.27, 1836.85],
        C3: [918.43, 1298.27],
        C4: [649.13, 918.43],
        C5: [459.21, 649.13],
        C6: [323.15, 459.21],
        C7: [229.61, 323.15],
        C8: [161.57, 229.61],
        C9: [113.39, 161.57],
        C10: [79.37, 113.39],
        RA0: [2437.80, 3458.27],
        RA1: [1729.13, 2437.80],
        RA2: [1218.90, 1729.13],
        RA3: [864.57, 1218.90],
        RA4: [609.45, 864.57],
        SRA0: [2551.18, 3628.35],
        SRA1: [1814.17, 2551.18],
        SRA2: [1275.59, 1814.17],
        SRA3: [907.09, 1275.59],
        SRA4: [637.80, 907.09],
        EXECUTIVE: [521.86, 756.00],
        FOLIO: [612.00, 936.00],
        LEGAL: [612.00, 1008.00],
        LETTER: [612.00, 792.00],
        TABLOID: [792.00, 1224.00]
      };
  
      return PDFPage;
  
    })();
  
    module.exports = PDFPage;
  
  }).call(this);
  