function PDFDocument(arg, callback) {
    if (isStream(arg))
      init.call(this, arg);
    else if (isArrayBuffer(arg))
      init.call(this, new Stream(arg));
    else
      error('PDFDocument: Unknown argument type');
  }
The `PDFDocument` holds all the data of the PDF file. Compared to the
`PDFDoc`, this one doesn't have any job management code.
Right now there exists one PDFDocument on the main thread + one object
for each worker. If there is no worker support enabled, there are two
`PDFDocument` objects on the main thread created.