给Adobe Reader添加书签功能
来源:互联网 发布:spring源码怎么看 编辑:程序博客网 时间:2024/05/01 07:52
给Adobe Reader添加书签功能 收藏
Adobe Acrobat Professional和Adobe Reader都是Adobe公司的产品。前者用来编辑制作PDF文档,后者只能用来阅读PDF。令人郁闷的是Adobe Reader中虽然有书签这一项显示,却没有添加书签的功能。解决方法一是使用Adobe Acrobat Professional,另一个方法如下:
在http://www.pdfhacks.com/bookmark_page/bookmark_page.js-1.0.zip 上面下载一个javascript脚本文件,把这个文件放到Adobe/Acrobat 7.0/Reader/Javascripts目录下。如果忘记了Adobe的安装目录,可以运行Adobe Reader,然后使用process explorer查看进程对应的可执行文件路径。文件放好后,重新运行Adobe Reader,就可以在“视图”菜单项的下面发现四个新增的条项。这四个新增的条项就是那个javascript文件的效果,它们能够实现书签的功能。这个新增的书签功能自然是不能和Adobe Acrobat Professional中的书签功能相比,但对于阅读文档也足够了。
下面是那个javascript文件的内容:
- // bookmark_page.js, ver. 1.0
- // visit: www.pdfhacks.com/bookmark_page/
- // use this delimiter for serializing our array
- 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= '';
- 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;
- }
- 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 label=
- app.response( "Bookmark Name:",
- "Bookmark Name",
- "",
- false );
- if( label!= null ) {
- var record= new Array(3);
- record[0]= label;
- 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
- //
- app.openDoc( data[index][1] );
- app.execMenuItem( "FirstPage" );
- for( ii= 0; ii< data[index][2]; ++ii ) {
- app.execMenuItem( "NextPage" );
- }
- }
- catch( ee ) {
- var response=
- app.alert("Error trying to open the requested document./nShould I remove this bookmark?", 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("Are you sure you want to erase all bookmarks?", 2, 2 )== 4 ) {
- SaveData( new Array(0) );
- }
- }
- app.addMenuItem( {
- cName: "-", // menu divider
- cParent: "View", // append to the View menu
- cExec: "void(0);" } );
- app.addMenuItem( {
- cName: "Bookmark This Page &5",
- cParent: "View",
- cExec: "AddBookmark();",
- cEnable: "event.rc= (event.target != null);" } );
- app.addMenuItem( {
- cName: "Go To Bookmark &6",
- cParent: "View",
- cExec: "ShowBookmarks();",
- cEnable: "event.rc= (event.target != null);" } );
- app.addMenuItem( {
- cName: "Remove a Bookmark",
- cParent: "View",
- cExec: "DropBookmark();",
- cEnable: "event.rc= (event.target != null);" } );
- app.addMenuItem( {
- cName: "Clear Bookmarks",
- cParent: "View",
- cExec: "ClearBookmarks();",
- cEnable: "event.rc= true;" } );
- 给Adobe Reader添加书签功能
- 给Adobe Reader添加书签功能
- 给Adobe Reader添加书签功能
- 为Adobe reader添加书签功能
- 在Adobe Reader里添加书签功能
- 为Adobe Reader添加书签功能
- adobe reader pdf 添加书签功能
- 如何向adobe reader添加书签功能
- Adobe Reader 下添加书签功能
- Adobe Reader 11.0添加书签功能
- adobe reader添加书签
- adobe reader 怎么添加书签
- 使用Javascript为Adobe Reader X 添加书签功能
- 为Adobe reader 9.5.1添加书签功能
- 在Adobe Reader中加入书签功能
- adobe reader x 10增加书签功能
- adobe reader x增加书签功能
- 为pdf阅读器(adobe reader)添加书签
- 处理【GDI+ 中发生一般性错误】
- DIV 显示的是中间出现空格解决办法
- JavaScript eval() 函数
- Android内核介绍
- SQL SERVER 去掉重复记录
- 给Adobe Reader添加书签功能
- PHP遍历关联数组的方法介绍
- 关于client profile
- Linux_Shell知多少—常用正则表达式
- SQL2005删除复制数据库的发布与订阅的方法
- .overlay
- 去除 struts2 标签中的自动生成的布局样式
- C/C++ 常量--林锐
- Assemble Language Programming(第九章)