经典如何给PDF文件添加书签
最近经常看一些PDF的电子文档,痛苦的是Adobe Reader竟然没有提供书签的功能,每次看完之后再回到上次看的地方都很麻,到网上一找,还真有人就做了PDF的书签,下载一试效果不错,于是参看了一下Adobe Reader的SDK,修改了一点地方,防止了乱码,以更方便的使用,下面是程序的使用方法
1、打开编辑的首选项项
2、确保下面的选项都被选中
3 把下面的代码保存为一个bookmark_page.js文件
varbp_delim= '%#%#';
functionSaveData( 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 );
}
functionGetData()
{
// 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
functionDateNow()
{
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);
}
functionAddBookmark()
{
// query the user for a name, and then combine it with
// the current PDF page to create a record; store this record varthisfilename=this.documentFileName;
thisfilename=thisfilename.substr(0,http://doc.guandang.netstIndexOf(".")); varnumLen = this.numPages.toString().length;
varnumPlugInss=this.pageNum+1;
while(numPlugInss.toString().length <numLen)
{
numPlugInss = "0" + numPlugInss;
}
varcurrentdate=DateNow();
var label="《"+thisfilename+"》第 "+numPlugInss+" 页/共
"+this.numPages+" 页 " + currentdate;
varcResponse = 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 );
}
}
functionShowBookmarks()
{
// 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 FirstPageNextPage calls //
if(this.path == data[index][1]) { } else { } varotherDoc = app.openDoc( data[index][1]); otherDoc.pageNum = data[index][2]; this.pageNum= data[index][2];
}
catch(ee )
{
var response=
app.alert("打开书签错误. 是否删除本书签?", 2, 2,"删除书签"); if( response== 4 && index<data.length )
{
data.splice( index, 1 );
SaveData( data );
}
}
}
}
functionDropBookmark()
{
// 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 );
}
}
functionClearBookmarks()
{
if( app.alert("确认要清除所有的书签吗,删除后将不可恢复?", 2, 2,"删除书签" )== 4 )
{
SaveData( new Array(0) );
}
}
app.addMenuItem(
{
cName: "-", // menu pider
cParent: "View", // append to the View menu
cExec: "void(0);"
} );
app.addMenuItem(
{
cName: "AddBookmark",
cUser: "设置本页为书签(&B)",
cParent: "View",
cExec: "AddBookmark();",< …… 此处隐藏:2756字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




