视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
怎么给PDF文件加书签
2025-10-02 14:02:24 责编:小OO
文档
最近经常看一些PDF的电子文档,痛苦的是Adobe Reader竟然没有提供书签的功能,每次看完之后再回到上次看的地方都很麻,到网上一找,还真有人就做了PDF的书签,下载一试效果不错,于是参看了一下Adobe Reader的SDK,修改了一点地方,防止了乱码,以更方便的使用,下面是程序的使用方法

1、打开编辑的首选项项

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

3 把下面的代码保存为一个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= '';

    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 );

}

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, 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);

}

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 numLen = this.numPages.toString().length;

    var numPlugInss=this.pageNum+1;

while(numPlugInss.toString().length < numLen)

    {

    numPlugInss = "0" + numPlugInss;

    }

    var currentdate=DateNow();

    var label="《"+thisfilename+"》第 "+numPlugInss+" 页/共 "+this.numPages+" 页 " + currentdate;

    var cResponse = 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 );

    }

}

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

            //

            if(this.path ==  data[index][1])

            {

                this.pageNum =  data[index][2];

            }

            else

            {

                var otherDoc = app.openDoc( data[index][1]);        

                otherDoc.pageNum = data[index][2];

            }

        }

        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: "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:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\Javascripts目录下

5 重新打开Adobe Reader,看看下面的视图,相信不用说任何东西,大家都会用了

http://hi.baidu.com/yarctic/blog/item/4313f2f21e173a16b07ec538.html下载本文

显示全文
专题