modules/autoprint.js

/** @license
 * jsPDF Autoprint Plugin
 *
 * Licensed under the MIT License.
 * http://opensource.org/licenses/mit-license
 */
 
 /**
 * @name autoprint
 * @module
 */
(function (jsPDFAPI) {
  'use strict';

 /**
 * Makes the PDF automatically print. This works in Chrome, Firefox, Acrobat
 * Reader.
 *
 * @name autoPrint
 * @function
 * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .
 * @returns {jsPDF}
 * @example
 * var doc = new jsPDF();
 * doc.text(10, 10, 'This is a test');
 * doc.autoPrint({variant: 'non-conform'});
 * doc.save('autoprint.pdf');
 */
  jsPDFAPI.autoPrint = function (options) {
    'use strict'
    var refAutoPrintTag;
    options = options || {};
    options.variant = options.variant || 'non-conform';

    switch (options.variant) {
      case 'javascript':
        //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb
        this.addJS('print({});');
        break;
      case 'non-conform':
      default: 
        this.internal.events.subscribe('postPutResources', function () {
          refAutoPrintTag = this.internal.newObject();
            this.internal.out("<<");
            this.internal.out("/S /Named");
            this.internal.out("/Type /Action");
            this.internal.out("/N /Print");
            this.internal.out(">>");
            this.internal.out("endobj");
        });

        this.internal.events.subscribe("putCatalog", function () {
          this.internal.out("/OpenAction " + refAutoPrintTag + " 0 R");
        });
        break;
    } 
    return this;
  };
})(jsPDF.API);