78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* globals Zotero, Components, OS, Uint8Array, PDFJS, logError */
 | |
| 
 | |
| 'use strict';
 | |
| var SUPPORTED_ANNOTS = ["Text", "Highlight", "Underline"];
 | |
| var _viewMark = '';
 | |
| 
 | |
| window.addEventListener('message',function(e){
 | |
|   // console.log(e);
 | |
|    switch (e.data.type){
 | |
|      case 'openPDF':
 | |
|        if(e.data._viewMark){
 | |
|          _viewMark = e.data._viewMark;
 | |
|        }
 | |
|        console.log(e);
 | |
|        
 | |
|        PdfExtractor.extractAnnotations({
 | |
|          binary:e.data.data
 | |
|        });
 | |
| 
 | |
|     }
 | |
| });
 | |
| 
 | |
| var PdfExtractor = {
 | |
| 
 | |
|   /** Extract annotations from a single PDF.
 | |
|    * @see Zotero.ZotFile.pdfAnnotations.pdfAttachmentsForExtraction (zotfile.js)
 | |
|    * for documentation on args object.
 | |
|    */
 | |
| 
 | |
|   extractAnnotations: function(args) {    
 | |
|     // function logError(msg) {
 | |
|     //  // Components.utils.reportError(msg);
 | |
|     //   //Zotero.ZotFile.pdfAnnotations.errorExtractingAnnotations = true;
 | |
|     // }
 | |
| 
 | |
|     // read file
 | |
|     // https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread    
 | |
|     //Components.utils.import("resource://gre/modules/osfile.jsm");
 | |
|         // create Uint8Array from file data
 | |
|         var int8View = new Uint8Array(args.binary);
 | |
|         // set options for extractions
 | |
|         // var removeHyphens = Zotero.ZotFile.getPref("pdfExtraction.NoteRemoveHyphens");
 | |
|         // args.itemProgress.setProgress(0);
 | |
|         // var progress = function(x, y) {
 | |
|         //   args.itemProgress.setProgress(x*100/y);
 | |
|         // };
 | |
|         // extract annotations
 | |
|         PDFJS.getPDFAnnotations(int8View, undefined, undefined,true).then(function(obj) {
 | |
|            // args.itemProgress.setProgress(100);
 | |
|            // var icon = obj.annotations.length>0 ? 'chrome://zotero/skin/tick.png' : 'chrome://zotero/skin/cross.png';
 | |
|            // args.itemProgress.setIcon(icon);
 | |
|            // args.callback.call(args.callbackObj, obj.annotations, args.item, args.att);
 | |
|           //  console.log(obj);
 | |
|          // console.log(document.getElementById('the-canvas').clientHeight,1111)
 | |
|           window.parent.postMessage({
 | |
|             type:"extractHighlight",
 | |
|             _viewMark:_viewMark,
 | |
|             annotations:obj.annotations,
 | |
|             width:document.getElementById('the-canvas').clientWidth,
 | |
|             height:document.getElementById('the-canvas').clientHeight
 | |
|          },"*");
 | |
| 
 | |
|         }, function(error) {
 | |
|             //args.itemProgress.setError();
 | |
|            /// logError('error opening PDF: ' + args.url + ' ' + error);
 | |
|            // args.callback.call(args.callbackObj, [], args.item, args.att);
 | |
|         });
 | |
| 
 | |
|     // error handler for file promise
 | |
|    // file promise
 | |
| 
 | |
|   } // extractAnnotations()
 | |
| 
 | |
| }; // Zotero.ZotFile.PdfExtractor
 | |
| 
 | |
| // starts extraction for the first PDF
 | |
| // Zotero.ZotFile.pdfAnnotations.extractAnnotationsFromFiles();
 |