{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /OpenAction 10 0 R
>>
endobj
{{object 2 0}} <<
  /Type /Pages
  /Count 4
  /Kids [
    3 0 R
    4 0 R
    5 0 R
    6 0 R
  ]
>>
endobj
% Page number 0.
{{object 3 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>
% Page number 1.
{{object 4 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>
% Page number 2.
{{object 5 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>
% Page number 3.
{{object 6 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /MediaBox [0 0 612 792]
>>

% Info
{{object 9 0}} <<
  /Author (Joe Random Author)
  /Creator (Joe Random Creator)
>>
endobj
% OpenAction action
{{object 10 0}} <<
  /Type /Action
  /S /JavaScript
  /JS 11 0 R
>>
endobj
% JS program to exexute
{{object 11 0}} <<
  {{streamlen}}
>>
stream
var document_props = [
  'ADBE',
  'author',
  'baseURL',
  'bookmarkRoot',
  'calculate',
  'Collab',
  'creationDate',
  'creator',
  'delay',
  'dirty',
  'documentFileName',
  'external',
  'filesize',
  'icons',
  'info',
  'keywords',
  'layout',
  'media',
  'modDate',
  'mouseX',
  'mouseY',
  'numFields',
  'numPages',
  'pageNum',
  'pageWindowRect',
  'path',
  'producer',
  'subject',
  'title',
  'URL',
  'zoom',
  'zoomType',
];

function testGetProps(props) {
  app.alert('*** Getting properties ***');
  for (var i = 0; i < props.length; ++i) {
    try {
      var expr1 = "this." + props[i];
      var expr2 = "typeof " + expr1;
      app.alert(expr1 + " is " + eval(expr2) + ' ' + eval(expr1));
    } catch (e) {
      app.alert("ERROR: " + e.toString());
    }
  }
}

function testSetProps(props, value) {
  app.alert('*** Setting properties to ' + value + ' ***');
  for (var i = 0; i < props.length; ++i) {
    try {
      var expr1 = "this." + props[i] + ' = ' + value + ';'
      app.alert(expr1 + " yields " + eval(expr1));
    } catch (e) {
      app.alert("ERROR: " + e.toString());
    }
  }
}

testGetProps(document_props);
testSetProps(document_props, 'true');
testSetProps(document_props, 'false');
testSetProps(document_props, '["red", 0, "blue", 42]');
testSetProps(document_props, '{"red": 0, "blue": 42}');
testSetProps(document_props, '"red"');
testSetProps(document_props, '3');
testGetProps(document_props);
endstream
endobj
{{xref}}
trailer <<
  /Root 1 0 R
  /Info 9 0 R
>>
{{startxref}}
%%EOF
