`
bcyy
  • 浏览: 1823938 次
文章分类
社区版块
存档分类
最新评论

为pdf阅读器(adobe reader)添加书签

 
阅读更多

不知道为什么,自己的pdf阅读器没有书签功能,上网找了找,研究了一个,测试还挺好用,现在给写出来,以备以后使用:

新建一个js: bookmark_page.js

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("打开书签错误. 是否删除本书签?", 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 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;" } );


将文件拷贝到D:\Program Files\Reader 9.0\Reader\Javascripts目录下


再重新打开pdf文件,向下拉一下,再点击"视图"选项,关于书签的操作就看见。


分享到:
评论

相关推荐

    福昕PDF阅读器(Foxit reader) 3.0 Build 1817

    福昕PDF阅读器(Foxit reader)是一个小巧的PDF文档阅读器,完全免费。有了它,你无须为仅仅阅读PDF文档而下载和安装庞大的Adobe Reader,而且启动快速,无需安装。对中文支持非常好。 福昕PDF阅读器新功能 1)支持...

    Android PDF 编辑阅读器 Xodo PDF Reader & Editor 5.0.11.zip

    Xodo 是一款全功能的 PDF 阅读器和 PDF 编辑器。使用 Xodo,您可以阅读,注释,签名和共享PDF,并填写 PDF 表单,以 PDF 格式打开.docx/.pptx,以及与 Google Drive,Dropbox 和 OneDrive 同步。想比起国产的 WPS ...

    PDF Reader Pro v2.7.7

    PDF Reader Pro ,是一款PDF编辑阅读软件,PDF Reader Pro专家让您直接在 Mac 上进行PDF文件阅读、笔记、编辑、转换、创建PDF、签署PDFs、填写PDF Forms表单、设置密码、合并拆分文件、水印等等,实现无纸化办公。...

    pdf-reader:PDF :: Reader库实现了一个PDF解析器,该解析器尽可能符合Adobe的PDF规范。

    PDF阅读器 PDF :: Reader库实现了一个PDF解析器,该解析器尽可能符合Adobe的PDF规范。 它可以高度灵活地以编程方式访问PDF文件的内容。 PDF 1.7规范是一份繁重的文档,目前尚不支持所有方面。 我欢迎提交展示规范...

    迷你PDF阅读器(MiniPDF) V1.1.2.9官方安装版.zip

    迷你PDF阅读器(MiniPDF)是一款快速轻巧的PDF阅读工具,软件完全免费。软件虽小,功能不缺。让你彻底摆脱臃肿庞大的Adobe Reader,同时软件还支持epub格式电子书阅读。 迷你PDF,体积小、打开速度极快!简约不简单!...

    foxit reader 3.1.10925 注册码

    福昕PDF阅读器(Foxit reader)是一个小巧的PDF文档阅读器,完全免费。有了它,你无须为仅仅阅读PDF文档而下载和安装庞大的Adobe Reader,而且启动快速,无需安装。对中文支持非常好。 福昕PDF阅读器新功能 1)支持...

    Foxit.Reader.Pro.Portable.v3.0.1301.CN中文绿色注册版

    让更多中国用户能快速上手, 体验更多使用福昕阅读器的乐趣.Foxit Reader为福昕软件的一款极为出色的阅读器, 具有速度快、体积小、节省系统资源、功能丰富以及安全性高等特点, 目前已是国际市场上最流行的PDF阅读器之...

    FoxitReader

    福昕PDF阅读器(Foxit reader)是一个小巧的PDF文档阅读器,完全免费。有了它,你无须为仅仅阅读PDF文档而下载和安装庞大的Adobe Reader,而且启动快速,无需安装。对中文支持非常好。 福昕PDF阅读器新功能 1)支持...

    最好用的PDF工具,PDF工具包(14合1)

    5、PDF阅读器 PDF Text Viewer可以从PDF文档中提取和预览文本信息。与Acrobat Reader或其它工具不同的是,PDF Text Viewer是以一种易读的格式形式摘取文本信息,对大多数的PDF文档都适用,你还可以将之打印、存档或...

    PDF工具包 下载

    &lt;br&gt;2、PDF分割器 3、PDF加密器 4、PDF解密器 5、PDF阅读器 &lt;br&gt;PDF Text Viewer可以从PDF文档中提取和预览文本信息。与Acrobat Reader或其它工具不同的是,PDF Text Viewer是以一种易读的格式...

    小巧免费的pdf软件

    一款小巧免费的PDF软件,之前用Adobe Reader但是每次阅读关闭没有书签,很不方便,后来用福昕阅读器,但是貌似有广告,可能升级后可能还要收费,最终在网上找到这款小巧免费的pdf软件与大家分享,可以直接解压到非非...

    一篇关于如何做pdf的faq指导

    这是一份资料来教大家做PDF。其中最主要的是做PDF的书签。说明一下,文中的acrobat是指adobe acrobat。它是专做pdf的一个编辑工具,目前已经发布到...而文中的reader,则是指读pdf文件的阅读器,并没有编辑功能。

Global site tag (gtag.js) - Google Analytics