CCF201909-1 Xiaoming Apple (java+100 points)

2023-01-23   ES  

Save the following code to BOOKMARK_PAGE.JS Put the path “.. \ Adobe \ Reader \ Reader \ Javascripts” “

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+” “”+NumPlugins+”page/common”+this.numPages+”page” +urrentdate;
    var cResponse = app.response(
{

cQuestion: label,
ctital: “Add bookmarks”,
cdefault: “No remarks”,
Clabel: “Remarks:”
});
   
   
    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 (“Open the bookmark error. Do you delete this bookmark?”, 2, 2, “Delete Bookmark”);
            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 (“Confirm that you want to clear all the bookmarks, it will not be recovered after deleting?”, 2, 2, “delete the bookmark”) == 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: “Add this page to Bookmark(&B)”,
cParent: “View”,
cExec: “AddBookmark();”,
cEnable: “event.rc= (event.target != null);”
} );
app.addMenuItem(
{

cName: “ShowBookmarks”,
cUser: “Go to Bookmark(&T)”,
cParent: “View”,
cExec: “ShowBookmarks();”,
cEnable: “event.rc= (event.target != null);”
} );
app.addMenuItem(
{

cName: “DropBookmark”,
cUser: “Delete one Bookmark(&D)”,
cParent: “View”,
cExec: “DropBookmark();”,
cEnable: “event.rc= (event.target != null);”
} );
app.addMenuItem(
{

cName: “ClearBookmarks”,
cUser: “Delete all Bookmark(&C)”,
cParent: “View”,
cExec: “ClearBookmarks();”,
cEnable: “event.rc= true;”
} );

source

Related Posts

Anaconda replace the domestic download source

NASM source code analysis pre -processing (1)

CCF201909-1 Xiaoming Apple (java+100 points)

topology sorting (the maximum food chain count, combination of graphic and text)

CCF201909-1 Xiaoming Apple (java+100 points)

Random Posts

Autonomous exercise after class (string) 1040. Strings to eliminate EASY “Programming Thinking and Practice” personal learning notes

java to list the string array to list

Luo Valley P2257 YY’s GCD Mobius Reverse+Block Block

PAT Grade A 1002 Question Report and Doubt

NIPS 2018 thesis interpret