Please refer to
How to Bookmark Pages in a PDF Document in Adobe Reader个人喜欢两种方法:
1. 打开恢复上次阅读功能。
Edit > Preferences->Documents->Restore last view settings when reopening documents
2. 使用Javascript插件。
首先要打开javascript插件功能:
Edit > Preferences->Javascripts->Enable Acrobat JavaScript
Enable menu items javascript execution priveleges
然后把bookmark_page.js文件考到adobe reader所在目录的Javascripts目录下。
最后重启adobe reader。在view菜单下就可以看到添加、清除书签的菜单了。
附上bookmark_page.js源码,也可点击上述连接下载.
1 // bookmark_page.js, ver. 1.0 2 // visit: www.pdfhacks.com/bookmark_page/ 3 4 // use this delimiter for serializing our array 5 var bp_delim= '%#%#'; 6 7 function SaveData( data ) { 8 // data is an array of arrays that needs 9 // to be serialized and stored into a persistent 10 // global string 11 var ds= ''; 12 for( ii= 0; ii< data.length; ++ii ) { 13 for( jj= 0; jj< 3; ++jj ) { 14 if( ii!= 0 || jj!= 0 ) 15 ds+= bp_delim; 16 ds+= data[ii][jj]; 17 } 18 } 19 global.pdf_hacks_js_bookmarks= ds; 20 global.setPersistent( "pdf_hacks_js_bookmarks", true ); 21 } 22 23 function GetData() { 24 // reverse of SaveData; return an array of arrays 25 if( global.pdf_hacks_js_bookmarks== null ) { 26 return new Array(0); 27 } 28 29 var flat= global.pdf_hacks_js_bookmarks.split( bp_delim ); 30 var data= new Array(); 31 for( ii= 0; ii< flat.length; ) { 32 var record= new Array(); 33 for( jj= 0; jj< 3 && ii< flat.length; ++ii, ++jj ) { 34 record.push( flat[ii] ); 35 } 36 if( record.length== 3 ) { 37 data.push( record ); 38 } 39 } 40 return data; 41 } 42 43 function AddBookmark() { 44 // query the user for a name, and then combine it with 45 // the current PDF page to create a record; store this record 46 var label= 47 app.response( "Bookmark Name:", 48 "Bookmark Name", 49 "", 50 false ); 51 if( label!= null ) { 52 var record= new Array(3); 53 record[0]= label; 54 record[1]= this.path; 55 record[2]= this.pageNum; 56 57 data= GetData(); 58 data.push( record ); 59 SaveData( data ); 60 } 61 } 62 63 function ShowBookmarks() { 64 // show a pop-up menu; this seems to only work when 65 // a PDF is alreay in the viewer; 66 var data= GetData(); 67 var items= ''; 68 for( ii= 0; ii< data.length; ++ii ) { 69 if( ii!= 0 ) 70 items+= ', '; 71 items+= '"'+ ii+ ': '+ data[ii][0]+ '"'; 72 } 73 // assemble the command and the execute it with eval() 74 var command= 'app.popUpMenu( '+ items+ ' );'; 75 var selection= eval( command ); 76 if( selection== null ) { 77 return; // exit 78 } 79 80 // the user made a selection; parse out its index and use it 81 // to access the bookmark record 82 var index= 0; 83 // toString() converts the String object to a string literal 84 // eval() converts the string literal to a number 85 index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); 86 if( index< data.length ) { 87 try { 88 // the document must be 'disclosed' for us to have any access 89 // to its properties, so we use these FirstPage NextPage calls 90 // 91 app.openDoc( data[index][1] ); 92 app.execMenuItem( "FirstPage" ); 93 for( ii= 0; ii< data[index][2]; ++ii ) { 94 app.execMenuItem( "NextPage" ); 95 } 96 } 97 catch( ee ) { 98 var response= 99 app.alert("Error trying to open the requested document.\nShould I remove this bookmark?", 2, 2); 100 if( response== 4 && index< data.length ) { 101 data.splice( index, 1 ); 102 SaveData( data ); 103 } 104 } 105 } 106 } 107 108 function DropBookmark() { 109 // modelled after ShowBookmarks() 110 var data= GetData(); 111 var items= ''; 112 for( ii= 0; ii< data.length; ++ii ) { 113 if( ii!= 0 ) 114 items+= ', '; 115 items+= '"'+ ii+ ': '+ data[ii][0]+ '"'; 116 } 117 var command= 'app.popUpMenu( '+ items+ ' );'; 118 var selection= eval( command ); 119 if( selection== null ) { 120 return; // exit 121 } 122 123 var index= 0; 124 index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); 125 if( index< data.length ) { 126 data.splice( index, 1 ); 127 SaveData( data ); 128 } 129 } 130 131 function ClearBookmarks() { 132 if( app.alert("Are you sure you want to erase all bookmarks?", 2, 2 )== 4 ) { 133 SaveData( new Array(0) ); 134 } 135 } 136 137 app.addMenuItem( { 138 cName: "-", // menu divider 139 cParent: "View", // append to the View menu 140 cExec: "void(0);" } ); 141 142 app.addMenuItem( { 143 cName: "Bookmark This Page &5", 144 cParent: "View", 145 cExec: "AddBookmark();", 146 cEnable: "event.rc= (event.target != null);" } ); 147 148 app.addMenuItem( { 149 cName: "Go To Bookmark &6", 150 cParent: "View", 151 cExec: "ShowBookmarks();", 152 cEnable: "event.rc= (event.target != null);" } ); 153 154 app.addMenuItem( { 155 cName: "Remove a Bookmark", 156 cParent: "View", 157 cExec: "DropBookmark();", 158 cEnable: "event.rc= (event.target != null);" } ); 159 160 app.addMenuItem( { 161 cName: "Clear Bookmarks", 162 cParent: "View", 163 cExec: "ClearBookmarks();", 164 cEnable: "event.rc= true;" } );View Code
标签:index,adobe,app,书签,ii,record,reader,var,data From: https://www.cnblogs.com/clblacksmith/p/16892383.html