By Sid Steward
Book Price: $24.95 USD
£17.50 GBP
PDF Price: $19.99
Cover | Table of Contents | Colophon
http://www.adobe.com/products/acrobat/readstep2.html.
You'll need to choose a language, platform, and
connection speed, and then a second field showing your download
options will appear. Each version has slightly different installation
instructions, but when you're done
you'll have either the Adobe Reader or Adobe Acrobat
Reader installed. The installer will also integrate Reader with your
web browser or browsers, if appropriate.http://www.adobe.com/products/acrobat/reader_archive.html.
http://www.adobe.com/products/acrobat/readstep2.html.
You'll need to choose a language, platform, and
connection speed, and then a second field showing your download
options will appear. Each version has slightly different installation
instructions, but when you're done
you'll have either the Adobe Reader or Adobe Acrobat
Reader installed. The installer will also integrate Reader with your
web browser or browsers, if appropriate.http://www.adobe.com/products/acrobat/reader_archive.html.
http://www.cs.wisc.edu/~ghost/) is an
alternative to a number of Adobe products. At its heart is a
PostScript processor, which also works on PDF files.
C:\Program Files\Adobe\Acrobat 6.0\Acrobat\plug_ins\
C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins\
plug_ins.profile_name.
For example, a production profile might have the folder name
plug_ins.production. Copy the desired plug-ins
into each profile folder; you can copy a plug-in into one or more
folders. The
plug_ins
folder will be your default profile.C:\switchboard.bat
production.:: switchboard.bat, version 1.0 :: visit: http://www.pdfhacks.com/switchboard/ :: :: switch the Acrobat plug_ins directory according to the first argument; :: the second argument can be a PDF filename to open; we assume that the :: second argument has been quoted for us, if necessary :: :: change into the directory with Acrobat.exe and plug_ins @echo off echo Acrobat Plug-In Switchboard Activated echo ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ echo Do not close this command session; echo it will close automatically after Acrobat is closed. cd /D "c:\program files\adobe\acrobat 6.0\acrobat\" if exist plug_ins.on_hold goto BUSY if not exist "plug_ins.%1" goto NOSUCHNUMBER :: make the switch rename plug_ins plug_ins.on_hold rename "plug_ins.%1" plug_ins Acrobat.exe %2 :: switch back rename plug_ins "plug_ins.%1" rename plug_ins.on_hold plug_ins goto DONE :BUSY @echo off echo NOTE- echo Acrobat is already running with a switched plug_ins directory. Acrobat.exe %2 goto DONE :NOSUCHNUMBER @echo off echo ERROR- echo The argument you passed to switchboard.bat does not match echo a custom plug_ins directory, at least not where I am looking. Acrobat.exe %2 :DONE
Acrobat:
production.cmd.exe, changing the
paths to suit, so it looks like this:C:\windows\system32\cmd.exe /C c:\switchboard.bat production "%1"
http://www.pdfhacks.com/TAPS/ to view the
license and download a copy. Don't have Acrobat 6,
either? Use Adobe Reader instead. TAPS works in both Acrobat and
Reader. Who would have guessed?http://www.pdfhacks.com/TAPS/ and download
Acrobat_5_TAPS.zip. Unzip, and then move the
resulting TAPS folder into your Reader
plug_ins directory. Restart Reader.
You'll now have the Table/Formatted Text Select
Tool, as shown in Figure 1-8.http://www.pdfhacks.com/autopaste/.
http://www.pdfhacks.com/page_turner/ to
download the JavaScript in Example 1-3. Unzip it,
and then copy it into your Acrobat or Reader
JavaScripts directory.
[Hack #96]
explains where to find this
directory on your platform. Restart Acrobat/Reader, and
http://www.gutenberg.net)—without
adding an ounce to your load.
pdftk
unpack_files
pdftk
input_pw
unpack_files
http://www.pdfhacks.com/jumpsection/ and
download jumpsection-1.0.zip. Unzip, and then
move jumpsection.api to your Adobe Acrobat
plug-ins directory. This directory is located somewhere such as
C:\Program Files\Adobe\Acrobat
5.0\Acrobat\plug_ins\.
http://www.pdfhacks.com/bookmark_page/ to
download the
JavaScript in Example 2-1. Unzip it, and then copy it into your Acrobat
or Reader JavaScripts directory.
[Hack #96]
explains where to find this
directory on your platform. Restart Acrobat/Reader, and
bookmark_page.js will add new items to your View
menu.// bookmark_page.js, ver. 1.0
// visit: http://www.pdfhacks.com/bookmark_page/
// use this delimiter for serializing our array
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;
}
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 label=
app.response( "Bookmark Name:",
"Bookmark Name",
"",
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 work only when
// a PDF is already 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 then 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("Error trying to open the requested document.\nShould
I remove this bookmark?", 2, 2);
if( response== 4 && index< data.length ) {
data.splice( index, 1 );
SaveData( data );
}
}
}
}
function DropBookmark( ) {
// modeled 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("Are you sure you want to erase all bookmarks?", 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: "Bookmark This Page &5",
cParent: "View",
cExec: "AddBookmark( );",
cEnable: "event.rc= (event.target != null);" } );
app.addMenuItem( {
cName: "Go To Bookmark &6",
cParent: "View",
cExec: "ShowBookmarks( );",
cEnable: "event.rc= (event.target != null);" } );
app.addMenuItem( {
cName: "Remove a Bookmark",
cParent: "View",
cExec: "DropBookmark( );",
cEnable: "event.rc= (event.target != null);" } );
app.addMenuItem( {
cName: "Clear Bookmarks",
cParent: "View",
cExec: "ClearBookmarks( );",
cEnable: "event.rc= true;" } );http://www.pdfhacks.com/bookmark_page/ to
download the
JavaScript in Example 2-1. Unzip it, and then copy it into your Acrobat
or Reader JavaScripts directory.
[Hack #96]
explains where to find this
directory on your platform. Restart Acrobat/Reader, and
bookmark_page.js will add new items to your View
menu.// bookmark_page.js, ver. 1.0
// visit: http://www.pdfhacks.com/bookmark_page/
// use this delimiter for serializing our array
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;
}
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 label=
app.response( "Bookmark Name:",
"Bookmark Name",
"",
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 work only when
// a PDF is already 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 then 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("Error trying to open the requested document.\nShould
I remove this bookmark?", 2, 2);
if( response== 4 && index< data.length ) {
data.splice( index, 1 );
SaveData( data );
}
}
}
}
function DropBookmark( ) {
// modeled 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("Are you sure you want to erase all bookmarks?", 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: "Bookmark This Page &5",
cParent: "View",
cExec: "AddBookmark( );",
cEnable: "event.rc= (event.target != null);" } );
app.addMenuItem( {
cName: "Go To Bookmark &6",
cParent: "View",
cExec: "ShowBookmarks( );",
cEnable: "event.rc= (event.target != null);" } );
app.addMenuItem( {
cName: "Remove a Bookmark",
cParent: "View",
cExec: "DropBookmark( );",
cEnable: "event.rc= (event.target != null);" } );
app.addMenuItem( {
cName: "Clear Bookmarks",
cParent: "View",
cExec: "ClearBookmarks( );",
cEnable: "event.rc= true;" } );http://www.pdfhacks.com/shortcuts/ to see the
status of Reader support.
http://www.pdfhacks.com/shortcuts/ and
download shortcuts-1.0.zip. Unzip, and then copy
shortcuts.api to your Acrobat
plug_ins folder. This folder is usually located
somewhere such as C:\Program Files\Adobe\Acrobat
5.0\Acrobat\plug_ins\.
|
Field name
|
Field value
|
|---|---|
|
DDE Message
|
[DocOpen("%1")] [DocGoTo("%1",%2=0)]
|
|
Application
|
acroview |
|
DDE Application Not Running
| |
|
Topic
|
control |
button. Or, select Plug-Ins → PDF Hacks → Shortcuts → Create Shortcuts to All Document Bookmarks. A set of shortcuts will appear in your Favorites folder. Create a new folder and move the new shortcuts to a convenient location.