JAVASCRIPT   46

pdfobject_source.js

Guest on 31st August 2021 09:59:42 AM

  1. /*
  2.         PDFObject, copyright (C) Philip Hutchison (pipwerks.com)
  3.         Documentation and examples are at www.pdfobject.com
  4.         Version 1.0,
  5.         MIT style license
  6. */
  7.  
  8. /*
  9.         PDFObject, copyright (C)  Philip Hutchison (pipwerks.com)
  10.         Documentation and examples are at www.pdfobject.com
  11.         Version 1.0
  12.         MIT style license
  13. */
  14.  
  15. /*global ActiveXObject */
  16.  
  17. var pipwerks = pipwerks || {};
  18.  
  19. /* ----------------------------------------------------
  20.    Supporting functions
  21.    ---------------------------------------------------- */
  22.  
  23. pipwerks.pdfUTILS = {
  24.  
  25.  
  26.         termFound: function (strToSearch, term){
  27.                 return (strToSearch.indexOf(term) !== -1);
  28.         },
  29.        
  30.  
  31.         detect: {
  32.                
  33.                
  34.                 hasReaderActiveX: function (){
  35.  
  36.                         var axObj = null;
  37.                        
  38.                         if (window.ActiveXObject) {
  39.                                
  40.                                 axObj = new ActiveXObject("AcroPDF.PDF");
  41.                                        
  42.                                 if(!axObj){
  43.                                        
  44.                                         axObj = new ActiveXObject("PDF.PdfCtrl");
  45.                        
  46.                                 }
  47.                                
  48.                                 if (axObj !== null) {
  49.                                        
  50.                                         return true;
  51.                                        
  52.                                 }
  53.                
  54.                         }
  55.                        
  56.                         return false;
  57.                        
  58.                 },
  59.  
  60.  
  61.                 hasReader: function (){
  62.                
  63.                         var termFound = pipwerks.pdfUTILS.termFound;
  64.                         var n = navigator.plugins;
  65.                        
  66.                         for(var i=0; i < n.length; i++){
  67.                                
  68.                                 var name = n[i].name;
  69.                                
  70.                                 if(termFound(name, "Adobe Reader") || termFound(name, "Adobe PDF") || termFound(name, "Acrobat")){
  71.                                        
  72.                                         return true;
  73.                                        
  74.                                 }
  75.                
  76.                         }
  77.                        
  78.                         return false;
  79.                
  80.                 },
  81.  
  82.  
  83.                 hasGeneric: function (){                                //Detects PDF plugin, regardless of manufacturer
  84.                        
  85.                         var plugin = navigator.mimeTypes["application/pdf"];
  86.                         return (plugin && plugin.enabledPlugin);
  87.                
  88.                 },
  89.                
  90.  
  91.                 pluginFound: function (){
  92.                
  93.                         var type = null;
  94.                         var detect = pipwerks.pdfUTILS.detect;
  95.                        
  96.                         if(detect.hasReader() || detect.hasReaderActiveX()){
  97.                                
  98.                                 type = "Adobe";
  99.                        
  100.                         } else if(detect.hasGeneric()) {
  101.                        
  102.                                 type = "generic";
  103.                        
  104.                         }
  105.                        
  106.                         return type;
  107.                
  108.                 }
  109.  
  110.         }, // END detect
  111.  
  112.  
  113.         setCssForFullWindowPdf: function (){
  114.                
  115.                 if(!document.getElementsByTagName){ return false; }
  116.                
  117.                 var html = document.getElementsByTagName("html");
  118.                 if(!html){ return false; }
  119.                
  120.                 var el = html[0];
  121.                 el.style.height = "100%";
  122.                 el.style.overflow = "hidden";
  123.        
  124.                 var b = document.body; 
  125.                 b.style.margin = "0";
  126.                 b.style.padding = "0";
  127.                 b.style.height = "100%";
  128.                 b.style.overflow = "hidden";
  129.                
  130.         },
  131.  
  132.  
  133.         buildQueryString: function(pdfOpenParams){
  134.                
  135.                 var string = "";
  136.                
  137.                 if(!pdfOpenParams){ return string; }
  138.                
  139.                 for (var prop in pdfOpenParams) {
  140.                        
  141.                         if (pdfOpenParams.hasOwnProperty(prop)) {
  142.                                
  143.                                 string += prop + "=";
  144.                                
  145.                                 if(prop === "search") {
  146.                                        
  147.                                         string += encodeURI(pdfOpenParams[prop]);
  148.                                
  149.                                 } else {
  150.                                        
  151.                                         string += pdfOpenParams[prop];
  152.                                        
  153.                                 }      
  154.                                
  155.                                 string += "&";
  156.                                
  157.                         }
  158.                        
  159.                 }
  160.                
  161.                 //Remove last ampersand
  162.                 return string.slice(0, string.length - 1);
  163.        
  164.         }
  165.        
  166. };
  167.  
  168.  
  169.  
  170. /* ----------------------------------------------------
  171.    PDF Embedding functions
  172.    ---------------------------------------------------- */
  173.  
  174. pipwerks.pdfObject = function (obj){
  175.        
  176.         if(!document.getElementById || !obj.url){ return false; }
  177.  
  178.         this.url = encodeURI(obj.url) + "#";                                                                    //The hash (#) prevents odd behavior in Windows
  179.         this.id = obj.id || false;     
  180.         this.width = obj.width   || "100%";
  181.         this.height = obj.height || "100%";
  182.         this.pdfOpenParams = obj.pdfOpenParams;
  183.         this.url += pipwerks.pdfUTILS.buildQueryString(this.pdfOpenParams);     //Append optional Adobe params for opening document
  184.         this.pluginTypeFound = pipwerks.pdfUTILS.detect.pluginFound();
  185.         this.pdfobjectversion = "1.0";
  186.         return this;                                                                                                                    //"return this" allows chaining
  187.        
  188. };
  189.  
  190.  
  191. pipwerks.pdfObject.prototype.get = function(prop){
  192.        
  193.         var value = null;
  194.        
  195.         switch(prop){
  196.                 case "url" : value = this.url; break;
  197.                 case "id" : value = this.id; break;
  198.                 case "width" : value = this.width; break;
  199.                 case "height" : value = this.height; break;
  200.                 case "pdfOpenParams" : value = this.pdfOpenParams; break;
  201.                 case "pluginTypeFound" : value = this.pluginTypeFound; break;
  202.                 case "pdfobjectversion" : value = this.pdfobjectversion; break;
  203.         }
  204.        
  205.         return value;
  206.        
  207. };
  208.  
  209.  
  210. pipwerks.pdfObject.prototype.embed = function(targetID){
  211.                
  212.         if(!this.pluginTypeFound){ return false; }
  213.         if(!document.createElement || !document.getElementById){ return false; }
  214.        
  215.         var isIE =/*@cc_on!@*/false;
  216.         var targetNode = null;
  217.  
  218.         if(targetID){
  219.                
  220.                 targetNode = document.getElementById(targetID);
  221.                 //Ensure target element is found in document before continuing
  222.                 if(!targetNode){ return false; }
  223.        
  224.         } else {
  225.        
  226.                 targetNode = document.body;
  227.                 pipwerks.pdfUTILS.setCssForFullWindowPdf();
  228.                 this.width = "100%";
  229.                 this.height = "100%";
  230.                
  231.         }
  232.        
  233.  
  234.         var objEl;
  235.        
  236.         if(isIE){
  237.                
  238.                 //Special handling for our special friend IE6
  239.                 objEl = document.createElement("<object classid='CLSID:CA8A9780-280D-11CF-A24D-444553540000'>");       
  240.        
  241.         } else {
  242.                
  243.                 objEl = document.createElement("object");
  244.        
  245.         }
  246.        
  247.         objEl.setAttribute("type", "application/pdf");
  248.         objEl.setAttribute("data", this.url);
  249.         objEl.setAttribute("width", this.width);
  250.         objEl.setAttribute("height", this.height);
  251.         if(this.id){ objEl.setAttribute("id", this.id); }
  252.  
  253.        
  254.  
  255.         //Remove child nodes if necessary
  256.         if(targetNode.hasChildNodes){
  257.                
  258.                 while(targetNode.childNodes.length > 0){
  259.                        
  260.                         targetNode.removeChild(targetNode.firstChild);
  261.                        
  262.                 }
  263.                
  264.         }
  265.        
  266.         targetNode.appendChild(objEl);
  267.        
  268.         return objEl;
  269.        
  270. };
  271.  
  272. var PDFObject = pipwerks.pdfObject;

Raw Paste


Login or Register to edit or fork this paste. It's free.