给PDF加书签防书签乱码版.docx
《给PDF加书签防书签乱码版.docx》由会员分享,可在线阅读,更多相关《给PDF加书签防书签乱码版.docx(10页珍藏版)》请在冰豆网上搜索。
![给PDF加书签防书签乱码版.docx](https://file1.bdocx.com/fileroot1/2023-3/28/fadbcd26-c9ba-4a5b-be30-7cfe94f59191/fadbcd26-c9ba-4a5b-be30-7cfe94f591911.gif)
给PDF加书签防书签乱码版
最近经常看一些PDF的电子文档,痛苦的是AdobeReader竟然没有提供书签的功能,每次看完之后再回到上次看的地方都很麻,到网上一找,还真有人就做了PDF的书签,下载一试效果不错,于是参看了一下AdobeReader的SDK,修改了一点地方,防止了乱码,以更方便的使用,下面是程序的使用方法
1、打开编辑的首选项项
2、确保下面的选项都被选中
3把下面的代码保存为一个bookmark_page.js文件
varbp_delim='%#%#';
functionSaveData(data)
{
//dataisanarrayofarraysthatneeds
//tobeserializedandstoredintoapersistent
//globalstring
vards='';
data.sort();
for(ii=0;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()
{
//reverseofSaveData;returnanarrayofarrays
if(global.pdf_hacks_js_bookmarks==null)
{
returnnewArray(0);
}
varflat=global.pdf_hacks_js_bookmarks.split(bp_delim);
vardata=newArray();
for(ii=0;ii{
varrecord=newArray();
for(jj=0;jj<3&&ii{
record.push(flat[ii]);
}
if(record.length==3)
{
data.push(record);
}
}
returndata;
}
//GetCurrentDate
functionDateNow()
{
vard,tmp,s;
d=newDate();
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()
{
//querytheuserforaname,andthencombineitwith
//thecurrentPDFpagetocreatearecord;storethisrecord
varthisfilename=this.documentFileName;
thisfilename=thisfilename.substr(0,thisfilename.lastIndexOf("."));
varnumLen=this.numPages.toString().length;
varnumPlugInss=this.pageNum+1;
while(numPlugInss.toString().length{
numPlugInss="0"+numPlugInss;
}
varcurrentdate=DateNow();
varlabel="《"+thisfilename+"》第"+numPlugInss+"页/共"+this.numPages+"页"+currentdate;
varcResponse=app.response(
{
cQuestion:
label,
cTitle:
"添加书签",
cDefault:
"无备注",
cLabel:
"备注:
"
});
if(cResponse!
=null)
{
varrecord=newArray(3);
record[0]=label+""+cResponse;
record[1]=this.path;
record[2]=this.pageNum;
data=GetData();
data.push(record);
SaveData(data);
}
}
functionShowBookmarks()
{
//showapop-upmenu;thisseemstoonlyworkwhen
//aPDFisalreayintheviewer;
vardata=GetData();
varitems='';
for(ii=0;ii{
if(ii!
=0)
items+=',';
items+='"'+ii+':
'+data[ii][0]+'"';
}
//assemblethecommandandtheexecuteitwitheval()
varcommand='app.popUpMenu('+items+');';
varselection=eval(command);
if(selection==null)
{
return;//exit
}
//theusermadeaselection;parseoutitsindexanduseit
//toaccessthebookmarkrecord
varindex=0;
//toString()convertstheStringobjecttoastringliteral
//eval()convertsthestringliteraltoanumber
index=eval(selection.substring(0,selection.indexOf(':
')).toString());
if(index{
try
{
//thedocumentmustbe'disclosed'forustohaveanyaccess
//toitsproperties,soweusetheseFirstPageNextPagecalls
//
if(this.path==data[index][1])
{
this.pageNum=data[index][2];
}
else
{
varotherDoc=app.openDoc(data[index][1]);
otherDoc.pageNum=data[index][2];
}
}
catch(ee)
{
varresponse=
app.alert("打开书签错误.是否删除本书签?
",2,2,"删除书签");
if(response==4&&index{
data.splice(index,1);
SaveData(data);
}
}
}
}
functionDropBookmark()
{
//modelledafterShowBookmarks()
vardata=GetData();
varitems='';
for(ii=0;ii{
if(ii!
=0)
items+=',';
items+='"'+ii+':
'+data[ii][0]+'"';
}
varcommand='app.popUpMenu('+items+');';
varselection=eval(command);
if(selection==null)
{
return;//exit
}
varindex=0;
index=eval(selection.substring(0,selection.indexOf(':
')).toString());
if(index{
data.splice(index,1);
SaveData(data);
}
}
functionClearBookmarks()
{
if(app.alert("确认要清除所有的书签吗,删除后将不可恢复?
",2,2,"删除书签")==4)
{
SaveData(newArray(0));
}
}
app.addMenuItem(
{
cName:
"-",//menudivider
cParent:
"View",//appendtotheViewmenu
cExec:
"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;"
});
4将文件拷贝到C:
\ProgramFiles(x86)\Adobe\Reader10.0\Reader\Javascripts目录下
5重新打开AdobeReader,看看下面的视图,相信不用说任何东西,大家都会用了