首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>编程相关>JAVASCRIPT>Adobe Reader利用javascript让PDF文件也支持书签功能
Adobe Reader利用javascript让PDF文件也支持书签功能
来源: 发布时间:2008-02-20 发布人: 浏览: 人次   字体: [ ]  

最近经常看一些PDF的电子文档,痛苦的是Adobe Reader竟然没有提供书签的功能,每次看完之后再回到上次看的地方都很麻,到网上一找,还真有人就做了PDF的书签,下载一试效果不错,于是参看了一下Adobe Reader的SDK,修改了一点地方,以更方便的使用,下面是程序的使用方法
1、打开编辑的首选项项
 

2、确保下面的选项都被选中

3 把下面的代码保存为一个bookmark_page.js文件 

// bookmark_page.js, ver. 1.0
//
 visit: www.pdfhacks.com/bookmark_page/
//
 edit:cjs 2008-02-17 
//
 1 修改为中文标签
//
 2 设置书签时可以自动获取当前的书名
//
 3 自动获取当前所在的页码与总页数,方便查阅
//
 4 实现更多功能可以参看Adobe Reader的SDK


// 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;
}


//Get Current Date
function DateNow(){
   
var d, s ;
   d 
= new Date();
   s 
= d.getFullYear()+"/";
   s 
+= (d.getMonth() + 1+ "/";
   s 
+= d.getDate() ;
   
/*
   s += d.getHours() + ":";
   s += d.getMinutes() + ":";
   s += d.getSeconds() ;
   
*/

   
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 numPlugInss=this.pageNum+1;
  
var currentdate=DateNow();
  
var label= 
    app.response( 
"书签名称,可以修改以便于记忆:",
                  
"书签名称",
                  
""+thisfilename+"》第 "+numPlugInss+" 页/共 "+this.numPages+" 页  "+currentdate,
                  
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(
"打开书签错误. 是否删除本书签?"22,"删除书签");
      
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("确认要清除所有的书签吗?"22,"删除书签" )== 4 ) {
    SaveData( 
new Array(0) );
  }

}


app.addMenuItem( 
{
cName: 
"-",              // menu divider
cParent: "View",         // append to the View menu
cExec: "void(0);" }
 );

app.addMenuItem( 
{
cName: 
"设置本页为书签(&B)",
cParent: 
"View",
cExec: 
"AddBookmark();",
cEnable: 
"event.rc= (event.target != null);" }
 );

app.addMenuItem( 
{
cName: 
"转到指定书签(&T)",
cParent: 
"View",
cExec: 
"ShowBookmarks();",
cEnable: 
"event.rc= (event.target != null);" }
 );
//cEnable: "event.rc= true;" } );

app.addMenuItem( 
{
cName: 
"删除一个书签(&D)",
cParent: 
"View",
cExec: 
"DropBookmark();",
cEnable: 
"event.rc= (event.target != null);" }
 );

app.addMenuItem( 
{
cName: 
"清除所有书签(&C)",
cParent: 
"View",
cExec: 
"ClearBookmarks();",
cEnable: 
"event.rc= true;" }
 );

 


共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·基于Ajax的可滚动表格代码实例
·浅谈javascript函数劫持,附实例
·使用javascript标记高亮关键词的代码...
·javascript读写TEXT文本文件示例代码
·javascript实现动态多附件上传方法
·javascript利用xhtml来实现动态导入j...
·JS遍历所有以TextBox_开头匹配的文本...
·Javascript实现打印网页中定义的部分...
·javascript实现在IE中图片的拖拽
·JavaScript实现刷新框架子页面的方法
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·javscript实现鼠标移到小图片
·如何在静态页面中利用javascr...
·javascript实现WEB页面导出为...
·如何在兼容IE和Firefox的情况
·javascript读取本地excel文档
·javascript实现页面自动刷新...
·javascript解决iframe框架页...
·javascript实现网易邮箱多附...
·javascript实现模仿IE自动完...
·javacript实现关闭子窗口,刷...
·javascript脚本实现右键弹出...
·javascript结合Ajax制作的可...
·javascript实现页面载入等待...
·javascript实现一个IP只弹窗...
·javascript导航条比较实用的...
热 门 文 章
·Ext2.0框架的Grid使用介绍祥...
·JS实现多行的HTML静态表格分...
·javascript实现多张图片轮流...
·javascript使用xml数据岛的简...
·javascript读写TEXT文本文件...
·幻灯片焦点图片新闻显示调用f...
·javascript实现页面载入等待...
·实例讲解Ext Js生成动态树,...
·Javascript在IE和FireFox中的...
·javascript实现动态多附件上...
·javascript脚本实现右键弹出...
·鼠标右下角显示层,javascrip...
·javascript解析身份证号码得...
·javascript实现的网页软键盘...
·js操作innerHTML 引起的未知...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .