给Adobe PDF文件添加书签(解决乱码问题)
来源:互联网 发布:人工智能最好书籍 编辑:程序博客网 时间:2024/05/17 17:15
安装adobe reader 之后,每次打开pdf,都要翻页,添加书签JS,方便下次快速链接;
打开PDF文件,菜单栏--》编辑---》首选项---》javascript---》执行js脚本/启动加载(全勾上好了)---》保存配置,退出!
把下面JS命名:bookmark_page.js保存至Adobe Reader 安装路径 C:\Program Files (x86)\Adobe\Reader 11.0\Reader\Javascripts
var bp_delim= '%#%#';function SaveData( data ){// data is an array of arrays that needs// to be serialized and stored into a persistent// global string var ds= ''; data.sort(); for( ii= 0; ii< data.length; ++ii ) { for( jj= 0; jj< 3; ++jj ) { if( ii!= 0 || jj!= 0 ) ds+= bp_delim; ds+= data[ii][jj]; } } global.pdf_hacks_js_bookmarks= ds; global.setPersistent( "pdf_hacks_js_bookmarks", true );}function GetData(){// reverse of SaveData; return an array of arrays if( global.pdf_hacks_js_bookmarks== null ) { return new Array(0); } var flat= global.pdf_hacks_js_bookmarks.split( bp_delim ); var data= new Array(); for( ii= 0; ii< flat.length; ) { var record= new Array(); for( jj= 0; jj< 3 && ii< flat.length; ++ii, ++jj ) { record.push( flat[ii] ); } if( record.length== 3 ) { data.push( record ); } } return data;}//Get Current Datefunction DateNow(){ var d, tmp ,s ; d = new Date(); t = d.getFullYear(); s = t + "/"; t = (d.getMonth() + 1).toString(); if(t.length!=2) t = "0" + t; s += t + "/"; t = (d.getDate()).toString(); if(t.length!=2) t = "0" + t; s += t; return(s);}function AddBookmark(){// query the user for a name, and then combine it with// the current PDF page to create a record; store this record var thisfilename=this.documentFileName; thisfilename=thisfilename.substr(0,thisfilename.lastIndexOf(".")); var numLen = this.numPages.toString().length; var numPlugInss=this.pageNum+1; while(numPlugInss.toString().length < numLen) {numPlugInss = "0" + numPlugInss; } var currentdate=DateNow(); var label="《"+thisfilename+"》第 "+numPlugInss+" 页/共 "+this.numPages+" 页 " + currentdate; var cResponse = app.response({ cQuestion: label, cTitle: "添加书签", cDefault: "无备注", cLabel: "备注:"}); if( cResponse!= null ) { var record= new Array(3); record[0]= label + " " + cResponse; record[1]= this.path; record[2]= this.pageNum; data= GetData(); data.push( record ); SaveData( data ); }}function ShowBookmarks(){// show a pop-up menu; this seems to only work when// a PDF is alreay in the viewer; var data= GetData(); var items= ''; for( ii= 0; ii< data.length; ++ii ) { if( ii!= 0 ) items+= ', '; items+= '"'+ ii+ ': '+ data[ii][0]+ '"'; }// assemble the command and the execute it with eval() var command= 'app.popUpMenu( '+ items+ ' );'; var selection= eval( command ); if( selection== null ) { return; // exit }// the user made a selection; parse out its index and use it// to access the bookmark record var index= 0;// toString() converts the String object to a string literal// eval() converts the string literal to a number index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); if( index< data.length ) { try { // the document must be 'disclosed' for us to have any access // to its properties, so we use these FirstPage NextPage calls //if(this.path == data[index][1]){this.pageNum = data[index][2];}else{var otherDoc = app.openDoc( data[index][1]); otherDoc.pageNum = data[index][2];} } catch( ee ) { var response= app.alert("打开书签错误. 是否删除本书签?", 2, 2,"删除书签"); if( response== 4 && index< data.length ) { data.splice( index, 1 ); SaveData( data ); } } }}function DropBookmark(){// modelled after ShowBookmarks() var data= GetData(); var items= ''; for( ii= 0; ii< data.length; ++ii ) { if( ii!= 0 ) items+= ', '; items+= '"'+ ii+ ': '+ data[ii][0]+ '"'; } var command= 'app.popUpMenu( '+ items+ ' );'; var selection= eval( command ); if( selection== null ) { return; // exit } var index= 0; index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); if( index< data.length ) { data.splice( index, 1 ); SaveData( data ); }}function ClearBookmarks(){ if( app.alert("确认要清除所有的书签吗,删除后将不可恢复?", 2, 2,"删除书签" )== 4 ) { SaveData( new Array(0) ); }}app.addMenuItem({cName: "-", // menu dividercParent: "View", // append to the View menucExec: "void(0);"} );app.addMenuItem({cName: "AddBookmark",cUser: "设置本页为书签(&B)",cParent: "View",cExec: "AddBookmark();",cEnable: "event.rc= (event.target != null);"} );app.addMenuItem({cName: "ShowBookmarks",cUser: "转到指定书签(&T)",cParent: "View",cExec: "ShowBookmarks();",cEnable: "event.rc= (event.target != null);"} );app.addMenuItem({cName: "DropBookmark",cUser: "删除一个书签(&D)",cParent: "View",cExec: "DropBookmark();",cEnable: "event.rc= (event.target != null);"} );app.addMenuItem({cName: "ClearBookmarks",cUser: "删除所有书签(&C)",cParent: "View",cExec: "ClearBookmarks();",cEnable: "event.rc= true;"} );
重新打开PDF文件,在工具栏视图最下方可以看到js生成的书签;
支持Adobe Reader 10.0 、11.0版本
- 给Adobe PDF文件添加书签(解决乱码问题)
- 为 adobe reder(pdf文件)添加书签
- 如何给pdf文件添加目录/书签
- 如何给PDF文件添加书签
- 在PDF文件(Adobe Reader)中添加书签导航
- 为pdf阅读器(adobe reader)添加书签
- adobe reader pdf 添加书签功能
- 给Adobe Reader添加书签功能
- 给Adobe Reader添加书签功能
- 给Adobe Reader添加书签功能
- 【转】LaTeX制作pdf文件书签乱码问题
- PDF文件(PDF/A)无法添加注释、附注、书签等功能的解决(已测试)
- 【引用】PDF文件(PDF/A)无法添加注释、附注、书签等功能的解决(已测试)
- Adobe Reader10添加书签
- adobe reader添加书签
- MiKTeX 2.9 生成pdf书签乱码问题
- 如何制作PDF,以及给PDF添加书签
- PDF文件如何添加书签功能
- HTML之Position用法
- 浅谈Web开发中的6种技术
- 编译cegcc 0.59.1
- 清空文件内容
- 有了JSF 及其插件 就不需要 学习html和js了么?
- 给Adobe PDF文件添加书签(解决乱码问题)
- 诡异的Android TextView排版布局问题
- 数据结构(二)
- ExtJs 与后台交互实例
- la4064
- JavaScript解析Json字符串的性能比较
- cf-#163-总结
- 回溯法-算法框架及基础
- 某人整理的游戏编程资料