Professional Documents
Culture Documents
Page 1
ACCESSING PDF ( PORTABLE DOCUMENT FORMAT ) .................................................. 4 WHAT IS ACROBAT?................................................................................................................... 4 IMPORTANT!! .............................................................................................................................. 4 ACCESSIBILITY FOR PDF ........................................................................................................... 4 WHAT IS THE ACROBAT SDK? .................................................................................................. 5 OLE AUTOMATION OBJECTS .................................................................................................... 5 HELLO ACROBAT................................................................................................................... 5 OLE AUTOMATION DOM ..................................................................................................... 6 ACROEXCH.POINT OBJECT.................................................................................................... 6 AcroExch.Point.X Property ............................................................................................ 7 AcroExch.Point.Y Property ............................................................................................ 7 ACROEXCH.RECT OBJECT ..................................................................................................... 7 AcroExch.Rect.Bottom Property .................................................................................... 7 AcroExch.Rect.Left Property.......................................................................................... 7 AcroExch.Rect.Right Property........................................................................................ 8 AcroExch.Rect.Top Property .......................................................................................... 8 ACROEXCH.TIME OBJECT ..................................................................................................... 8 AcroExch.Time.Date Property........................................................................................ 8 AcroExch.Time.Hour Property ....................................................................................... 8 AcroExch.Time.Millisecond Property ............................................................................ 9 AcroExch.Time.Minute Property.................................................................................... 9 AcroExch.Time.Month Property..................................................................................... 9 AcroExch.Time.Second Property.................................................................................... 9 AcroExch.Time.Year Property........................................................................................ 9 ACROEXCH.APP OBJECT ..................................................................................................... 10 AcroExch.App.CloseAllDocs() Method ....................................................................... 10 AcroExch.App.Exit() Method....................................................................................... 11 AcroExch.App.GetActiveDoc() Method....................................................................... 11 AcroExch.App.GetActiveTool() Method...................................................................... 12 AcroExch.App.GetAVDoc() Method ........................................................................... 13 AcroExch.App.GetFrame() Method.............................................................................. 14 AcroExch.App.GetNumAVDocs() Method.................................................................. 14 AcroExch.App.GetLanguage() Method ........................................................................ 15 AcroExch.App.GetPreferenceEx() Method .................................................................. 15 AcroExch.App.Hide() Method...................................................................................... 15 AcroExch.App.Lock() Method ..................................................................................... 16 AcroExch.App.Minimize() Method .............................................................................. 16 AcroExch.App.Maximize() Method ............................................................................. 17 AcroExch.App.MenuItemExecute() Method ................................................................ 17 AcroExch.App.MenuItemIsEnabled() Method ............................................................. 18 AcroExch.App.MenuItemIsMarked() Method.............................................................. 19 AcroExch.App.MenuItemRemove() Method................................................................ 19 AcroExch.App.SetActiveTool() Method ...................................................................... 20 AcroExch.App.SetFrame() Method .............................................................................. 20 AcroExch.App.SetPreference() Method ....................................................................... 21 AcroExch.App.Show() Method .................................................................................... 21 AcroExch.App.ToolButtonIsEnabled() Method ........................................................... 21 AcroExch.App.ToolButtonRemove() Method.............................................................. 23
Dani Vainstein Accessing PDF's Page 1 of 79
Chapter 16
Page 2
AcroExch.App.Unlock() Method.................................................................................. 23 ACROEXCH.AVDOC OBJECT .............................................................................................. 24 AcroExch.AVDoc.BringToFront() Method.................................................................. 24 AcroExch.AVDoc.ClearSelection() Method................................................................. 24 AcroExch.AVDoc.Close() Method ............................................................................... 24 AcroExch.AVDoc.FindText() Method ......................................................................... 25 AcroExch.AVDoc.GetAVPageView() Method ............................................................ 26 AcroExch.AVDoc.GetFrame () Method ....................................................................... 26 AcroExch.AVDoc.GetPDDoc () Method...................................................................... 27 AcroExch.AVDoc.GetTitle () Method.......................................................................... 27 AcroExch.AVDoc.GetViewMode () Method ............................................................... 27 AcroExch.AVDoc.IsValid () Method ........................................................................... 29 AcroExch.AVDoc.Maximize() Method........................................................................ 29 AcroExch.AVDoc.Open() Method ............................................................................... 29 AcroExch.AVDoc.OpenInWindowEx() Method.......................................................... 30 AcroExch.AVDoc.PrintPages() and PrintPagesSilent() Methods................................. 31 AcroExch.AVDoc.SetFrame() Method......................................................................... 31 AcroExch.AVDoc.SetTextSelection() Method............................................................. 32 AcroExch.AVDoc.SetTitle() Method ........................................................................... 32 AcroExch.AVDoc.SetViewMode() Method ................................................................. 32 AcroExch.AVDoc.ShowTextSelect () Method............................................................. 33 ACROEXCH.AVPAGEVIEW OBJECT .................................................................................... 33 AcroExch.AVPageView.DevicePointToPage () Method ............................................. 34 AcroExch.AVPageView.DoGoBack () Method ........................................................... 34 AcroExch.AVPageView.DoGoForward() Method ....................................................... 35 AcroExch.AVPageView.GetAVDoc() Method ............................................................ 35 AcroExch.AVPageView.GetDoc() Method.................................................................. 35 AcroExch.AVPageView.GetPage() Method................................................................. 36 AcroExch.AVPageView.GetPageNum() Method......................................................... 36 AcroExch.AVPageView.GetZoom() Method ............................................................... 37 AcroExch.AVPageView.GetZoomType() Method....................................................... 37 AcroExch.AVPageView.Goto() Method ...................................................................... 37 AcroExch.AVPageView.ReadPageDown() and ReadPageUp() Methods.................... 38 AcroExch.AVPageView.ScrollTo() Method ................................................................ 38 AcroExch.AVPageView.ZoomTo() Method ................................................................ 39 ACROEXCH.HILITELIST OBJECT ......................................................................................... 39 AcroExch.HiliteList.Add() Method .............................................................................. 39 ACROEXCH.PDANNOT OBJECT........................................................................................... 40 ACROEXCH.PDBOOKMARK OBJECT ................................................................................... 40 AcroExch.PDBookmark.Destroy () Method................................................................. 40 AcroExch.PDBookmark.GetByTitle() Method............................................................. 41 AcroExch.PDBookmark.GetTitle() Method ................................................................. 42 AcroExch.PDBookmark.IsValid() Method................................................................... 42 AcroExch.PDBookmark.Perform() Method ................................................................. 42 AcroExch.PDBookmark.SetTitle() Method.................................................................. 43 ACROEXCH.PDDOC OBJECT ............................................................................................... 43 AcroExch.PDDoc.AcquirePage () Method ................................................................... 43 AcroExch.PDDoc.ClearFlags () Method ...................................................................... 44 AcroExch.PDDoc.Close () Method............................................................................... 45 AcroExch.PDDoc.Create () Method ............................................................................. 45 AcroExch.PDDoc.CreateTextSelect () Method ............................................................ 45
Dani Vainstein Accessing PDF's Page 2 of 79
Chapter 16
Page 3
AcroExch.PDDoc.CreateThumbs () Method ................................................................ 46 AcroExch.PDDoc.CropPages () Method ...................................................................... 46 AcroExch.PDDoc.DeletePages () Method .................................................................... 47 AcroExch.PDDoc.DeleteThumbs () Method ................................................................ 48 AcroExch.PDDoc.GetFileName () Method .................................................................. 48 AcroExch.PDDoc.GetFlags () Method ......................................................................... 48 AcroExch.PDDoc.GetInfo () Method ........................................................................... 49 AcroExch.PDDoc.GetInstanceID () Method ................................................................ 50 AcroExch.PDDoc.GetJSObject () Method.................................................................... 50 AcroExch.PDDoc.GetNumPages () Method................................................................. 51 AcroExch.PDDoc.GetPageMode () Method................................................................. 52 AcroExch.PDDoc.GetPermanentID () Method............................................................. 52 AcroExch.PDDoc.InsertPages () Method ..................................................................... 52 AcroExch.PDDoc.MovePage () Method....................................................................... 53 AcroExch.PDDoc.Open () Method ............................................................................... 53 AcroExch.PDDoc.OpenAVDoc () Method................................................................... 53 AcroExch.PDDoc.ReplacePages () Method.................................................................. 54 AcroExch.PDDoc.Save () Method ................................................................................ 54 AcroExch.PDDoc.SetFlags () Method .......................................................................... 55 AcroExch.PDDoc.SetInfo () Method ............................................................................ 55 AcroExch.PDDoc.SetPageMode () Method.................................................................. 55 ACROEXCH.PDPAGE OBJECT.............................................................................................. 55 AcroExch.PDPage.AddAnnot () Method...................................................................... 55 AcroExch.PDPage.AddNewAnnot () Method .............................................................. 56 AcroExch.PDPage.CreatePageHilite () Method ........................................................... 56 AcroExch.PDPage.CreateWordHilite () Method .......................................................... 58 AcroExch.PDPage.GetAnnotIndex() Method............................................................... 60 AcroExch.PDPage.GetDoc() Method ........................................................................... 61 AcroExch.PDPage.GetNumAnnots() Method .............................................................. 61 AcroExch.PDPage.GetNumber() Method..................................................................... 62 AcroExch.PDPage.GetRotate() Method ....................................................................... 62 AcroExch.PDPage.GetSize() Method ........................................................................... 62 AcroExch.PDPage.RemoveAnnot() Method ................................................................ 63 AcroExch.PDPage.SetRotate () Method ....................................................................... 63 ACROEXCH.PDTEXTSELECT OBJECT ................................................................................. 65 AcroExch.PDTextSelect.Destroy () Method................................................................. 65 AcroExch.PDTextSelect.GetBoundingRect () Method ................................................ 65 AcroExch.PDTextSelect.GetNumText () Method ........................................................ 66 AcroExch.PDTextSelect.GetPage () Method................................................................ 68 AcroExch.PDTextSelect.GetText () Method ................................................................ 69 ACROFORM OLE AUTOMATION ............................................................................................. 69 AFORMAUT.APP OBJECT .................................................................................................... 70 AFORMAUT.FIELD OBJECT ................................................................................................. 70 AFORMAUT.FIELDS OBJECT ............................................................................................... 70 DEVELOPER FAQ ..................................................................................................................... 70 USER AND DEVELOPER RESOURCES ................................................................................... 70 What Do I Need to Download from the Web to Get the Acrobat SDK? ...................... 70 Where Can I Get Help With Acrobat Product Issues? .................................................. 71 What Are the API Differences Between Acrobat and Adobe Reader? ......................... 71 What API Methods Are Available to Modify PDF Documents?.................................. 71 How Can I Extract Text From PDF Documents Using the Acrobat SDK? .................. 72
Dani Vainstein Accessing PDF's Page 3 of 79
Chapter 16
Page 4
How Do I Use Command Lines with Acrobat and Adobe Reader on Windows? ........ 72 PDF TASKS ................................................................................................................................ 72 Find Text in all PDF's File Open................................................................................... 72 Invoking AVCommands Programmatically.................................................................. 73 Searching words in PDF................................................................................................ 74 APPENDIX 15 ............................................................................................................................. 77 View Mode Enumeration .............................................................................................. 77 Toolbar Items Names .................................................................................................... 78 Zoom Strategy Enumeration ......................................................................................... 78 Page Rotation Enumeration........................................................................................... 79 Document Flags Enumeration....................................................................................... 79
Important!!
The Microsoft Windows version of Acrobat is an OLE Automation server. In order to use the OLE objects made available by Acrobat, you must have the full Acrobat product installed on your system!!
For Unix Platforms, Adobe Reader supports the Gnome accessibility architecture.
Dani Vainstein
Accessing PDF's
Page 4 of 79
Chapter 16
Page 5
Hello Acrobat
Option Explicit Dim gApp, gPDDoc, jso Set gApp = CreateObject( "AcroExch.App" ) Set gPDDoc = CreateObject( "AcroExch.PDDoc" ) If gPDDoc.Open( "c:\MyPdfFile.pdf" ) Then Set jso = gPDDoc.GetJSObject() jso.console.Show jso.console.Clear jso.console.println ( "Hello, Acrobat for QuickTest!" ) gApp.Show End If Set jso = Nothing : Set gPDDoc = Nothing : Set gApp = Nothing
Dani Vainstein
Accessing PDF's
Page 5 of 79
Chapter 16
Page 6
AcroExch.Point Object
A point, specified by its x and ycoordinates.
Dani Vainstein
Accessing PDF's
Page 6 of 79
Chapter 16
Page 7
AcroExch.Point.X Property
Gets or sets the x-coordinate of an AcroPoint.
returnValue = object.X
AcroExch.Point.Y Property
Gets or sets the y-coordinate of an AcroPoint.
returnValue = object.Y
AcroExch.Rect Object
A rectangle, specified by the top left and bottom right points.
AcroExch.Rect.Bottom Property
Gets or sets the bottom y-coordinate of an AcroRect.
returnValue = object.Bottom
AcroExch.Rect.Left Property
Gets or sets left x-coordinate of an AcroRect.
returnValue = object.Left
The x-coordinate of the left side of the AcroRect. Dani Vainstein Accessing PDF's Page 7 of 79
Chapter 16
Page 8
AcroExch.Rect.Right Property
Gets or sets the right x-coordinate of an AcroRect.
returnValue = object.Right
AcroExch.Rect.Top Property
Gets or sets the top y-coordinate of an AcroRect.
returnValue = object.Top
AcroExch.Time Object
A specified time, accurate to the millisecond, including the day of the week.
AcroExch.Time.Date Property
Gets or sets the date from an AcroTime.
returnValue = object.Date
The date from the AcroTime. The date runs from 1 to 31.
AcroExch.Time.Hour Property
Gets or sets the hour from an AcroTime.
returnValue = object.Hour
The hour from the AcroTime. The hour runs from 0 to 23. Dani Vainstein Accessing PDF's Page 8 of 79
Chapter 16
Page 9
AcroExch.Time.Millisecond Property
Gets or sets the milliseconds from an AcroTime.
returnValue = object.Millisecond
AcroExch.Time.Minute Property
Gets or sets the minutes from an AcroTime.
returnValue = object.Minute
AcroExch.Time.Month Property
Gets or sets the month from an AcroTime.
returnValue = object.Month
The month from the AcroTime. The month runs from 1 to 12, where 1 is January, ..., and 12 is December.
AcroExch.Time.Second Property
Gets or sets the seconds from an AcroTime.
returnValue = object.Second
AcroExch.Time.Year Property
Dani Vainstein
Accessing PDF's
Page 9 of 79
Chapter 16
Page 10
returnValue = object.Year
The year from the AcroTime. The Year runs from 1 to 32767.
AcroExch.App Object
The Acrobat application itself. This is a creatable interface. From the application layer, you may control the appearance of Acrobat, whether Acrobat appears, and the size of the application window. This object provides access to the menu bar and the toolbar, as well as the visual representation of a PDF file on the screen (via an AVDoc object).
AcroExch.App.CloseAllDocs() Method
Closes all open documents. You can close each individual AVDoc object by calling AVDoc.Close.
returnValue = object.CloseAllDocs
-1 if successful, 0 if not.
You must explicitly close all documents or call App.CloseAllDocs. Otherwise, the process will never exit.
Option Explicit Dim AcroApp, returnValue Set AcroApp = CreateObject( "AcroExch.App" ) If AcroApp.GetNumAVDocs > 0 Then returnValue = AcroApp.CloseAllDocs() End If Print "AcroApp.CloseAllDocs returned with code ---> " & Cstr( returnValue ) Set AcroApp = Nothing
Dani Vainstein
Accessing PDF's
Page 10 of 79
Chapter 16
Page 11
AcroExch.App.Exit() Method
Exits Acrobat. Applications should call App.Exit before exiting.
returnValue = object.Exit
Returns -1 if the entire shutdown process succeeded. This includes closing any open documents, releasing OLE references, and finally exiting the application. If any step fails, the function returns 0, and the application will continue running. This method will not work if the application is visible (if the user is in control of the application). In such cases, if the Show() method had previously been called, you may call Hide() and then Exit().
Use App.CloseAllDocs to close all the documents before calling this method.
Option Explicit Dim AcroApp, returnValue Set AcroApp = CreateObject( "AcroExch.App" ) If AcroApp.GetNumAVDocs > 0 Then returnValue = AcroApp.CloseAllDocs() End If Print "AcroApp.CloseAllDocs returned with code ---> " & Cstr( returnValue ) AcroApp.Exit() Set AcroApp = Nothing
AcroExch.App.GetActiveDoc() Method
Gets the frontmost document.
An AcroExch.AVDoc that represents the frontmost AcroExch.AVDoc object. If there are no documents open, it will return Nothing.
App.GetAVDoc()
Dani Vainstein
Accessing PDF's
Page 11 of 79
Chapter 16
Page 12
Set AcroAVDoc = AcroApp.GetActiveDoc() If Not AcroAVDoc Is Nothing Then returnValue = AcroApp.CloseAllDocs() End If AcroApp.Exit()Set AcroApp = Nothing
AcroExch.App.GetActiveTool() Method
Gets the name of the currently active tool.
returnValue = object.GetActiveTool
Returns Nothing if there is no active tool. Returns the name of the currently active tool otherwise.
Tool Name
Movie Link Thread Crop Widget Touch-Up Text Selection Object Selection Type Hand Zoom Select BCLC:Table/Formatted_TextZoneTool SelectGraphics Text FreeText Sound Stamp FileAttachment Ink Square Circle Line Highlight
UI Label
Movie Tool (M) Link Tool (L) Article Tool (A) Crop Tool (C) Form Tool (F) TouchUp Text Tool (T) TouchUp Object Tool (T) / TouchUp Order Tool (T) Hand Tool (H) Zoom In Tool (Z) / Zoom Out Tool (Z) Text Select Tool (V) / Column Select Tool (V) Table/Formatted Text Select Tool (V) Graphics Select Tool (G) Note Tool (S) FreeText Tool (S) Sound Attachment Tool (S) Stamp Tool (S) File Attachment Tool (S) Pencil Tool (N) Square Tool (N) Circle Tool (N) Line Tool (N) Highlight Tool (U)
Dani Vainstein
Accessing PDF's
Page 12 of 79
Chapter 16
Page 13
Strikeout Tool (U) Underline Tool (U) Not exposed through UI. Digital Signature Tool (D)
App.SetActiveTool()
Option Explicit Dim AcroApp, AcroAvDoc Set AcroApp = CreateObject( "AcroExch.App" ) Set AcroAVDoc = AcroApp.GetActiveDoc() If Not AcroAVDoc Is Nothing Then returnValue = AcroApp.CloseAllDocs() End If AcroApp.Exit()Set AcroApp = Nothing
AcroExch.App.GetAVDoc() Method
Gets an AcroExch.AVDoc object via its index within the list of open AVDoc objects. Use App.GetNumAVDocs to determine the number of AcroExch.AVDoc objects.
An AVDoc object for the specified AcroExch.AVDoc document, or Nothing if nIndex is greater than the number of open documents.
Parameter
nIndex
Description
The index of the document to get.
App.GetActiveDoc()
Dani Vainstein
Accessing PDF's
Page 13 of 79
Chapter 16
Page 14
Set AcroApp = CreateObject( "AcroExch.App" ) If AcroApp.GetNumAVDocs > 0 Then Print "Currently open documents ---> " & AcroApp.GetNumAVDocs For nDoc = 0 To AcroApp.GetNumAVDocs - 1 Set AcroAvDoc = AcroApp.GetAVDoc( nDoc ) Print "Index = " & nDoc & " title : " & AcroAvDoc.GetTitle() Next Else Print "No open pdf documents found." End If AcroApp.Exit() Set AcroApp = Nothing : Set AcroAvDoc = Nothing
AcroExch.App.GetFrame() Method
Gets the windows frame.
The AcroExch.Rect object that represents the windows frame, specified as an AcroExch.Rect
GetFrame is not useful when the PDF file was opened with AVDoc.OpenInWindow. GetFrame returns the application windows frame (not the document windows frame). However, the applications window is hidden when a document is opened using OpenInWindow, and does not change in size as document windows are moved and resized.
App.Maximize() App.SetFrame()
AcroExch.App.GetNumAVDocs() Method
Gets the number of open AcroExch.AVDoc objects. The maximum number of documents the Acrobat application can open at a time is specified by the avpMaxOpenDocuments preference, which can be obtained with App.GetPreferenceEx and set by App.SetPreferenceEx. Dani Vainstein Accessing PDF's Page 14 of 79
Chapter 16
Page 15
count = object.GetNumAVDocs()
App.GetActiveDoc() App.GetAVDoc()
AcroExch.App.GetLanguage() Method
Gets a code that specifies which language the Acrobat applications user interface is using.
lang = object.GetLanguage()
String containing a three-letter language code. Must be one of the following: DEU German , ENU English, ESP Spanish, FRA French, ITA Italian NLD Dutch, SVE Swedish, CZE Czech, SUO Finnish, JPN Japanese More ...
App.GetPreference() App.SetPreference()
AcroExch.App.GetPreferenceEx() Method
Gets the specified application preference, using the Variant type to pass values.
Parameter
nType
Description
The name of the preferences item whose value is obtained.
AcroExch.App.Hide() Method
Dani Vainstein
Accessing PDF's
Page 15 of 79
Chapter 16
Page 16
Hides the Acrobat application. When the viewer is hidden, the user has no control over it, and the Acrobat application exits when the last automation object is closed.
returnValue = object.Hide()
App.Show()
AcroExch.App.Lock() Method
Locks the Acrobat application. Typically, this method is called when using AVDoc.OpenInWindowEx to draw into another applications window. If you call App.Lock, you should call App.UnlockEx when you are done using OLE automation. There are some advantages and disadvantages of locking the viewer when using AVDoc.OpenInWindowEx. You must weigh these before deciding whether to lock the viewer: Locking prevents problems that can sometimes occur if two processes are trying to open a file at the same time. Locking prevents a user from using Acrobats user interface (such as adding annotations) in your applications window. Locking can prevent any other application, including the Acrobat application, from opening PDF files. This problem can be minimized by calling App.UnlockEx as soon as the file as been opened.
Parameter
lockedBy
Description
A string that is used as the name of the application that has locked the Acrobat application.
true if the Acrobat application was locked successfully, false otherwise. Locking will fail if the Acrobat application is visible.
App.Unlock()
AcroExch.App.Minimize() Method
Minimizes the Acrobat application.
Dani Vainstein
Accessing PDF's
Page 16 of 79
Chapter 16
Page 17
Parameter
bMinimize
Description
If a positive number, the Acrobat application is minimized. If 0, the Acrobat application is returned to its normal state.
AcroExch.App.Maximize() Method
Maximizes the Acrobat application.
Parameter
bMaximize
Description
If a positive number, the Acrobat application is maximized. If 0, the Acrobat application is returned to its normal state.
App.GetFrame() App.SetFrame()
AcroExch.App.MenuItemExecute() Method
Executes the menu item whose language-independent menu item name is specified.
Parameter
Description
The language-independent name of the menu item to execute. ShowHideToolBar ShowHideMenuBar (new in Acrobat 3.0) ShowHideClipboard endShowHideGroup Cascade
menuItemName
Dani Vainstein
Accessing PDF's
Page 17 of 79
Chapter 16
Page 18
Returns true if the menu item executes successfully, false if the menu item is missing or is not enabled.
Option Explicit Dim AcroApp, AcroAVDoc Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set AcroApp = CreateObject( "AcroExch.App" ) ' ** show Acrobat AcroApp.Show() ' ** Set AVDoc object Set AcroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If AcroAVDoc.Open( gPDFPath, "" ) Then wait 1 acroApp.MenuItemExecute ( "ShowHideToolBar" ) MsgBox "toolbar should be hidden" acroApp.MenuItemExecute ( "ShowHideToolBar" ) wait 1 End If AcroApp.CloseAllDocs() AcroApp.Exit() Set AcroApp = Nothing : Set AcroAvDoc = Nothing
AcroExch.App.MenuItemIsEnabled() Method
Determines whether the specified menu item is enabled.
Parameter
menuItemName
Description
The language-independent name of the menu item whose enabled state is obtained.
Dani Vainstein
Accessing PDF's
Page 18 of 79
Chapter 16
Page 19
True if the menu item is enabled, False if it is disabled or does not exist.
AcroExch.App.MenuItemIsMarked() Method
Determines whether the specified menu item is marked.
Parameter
menuItemName
Description
The language-independent name of the menu item whose marked state is obtained.
True if the menu item is enabled, False if it is disabled or does not exist.
AcroExch.App.MenuItemRemove() Method
Removes the menu item whose language-independent menu item is specified.
Parameter
menuItemName
Description
The language-independent name of the menu item to remove.
True if the menu item was removed, False if the menu item does not exist.
App.MenuItemExecute() App.MenuItemIsEnabled()
Dani Vainstein
Accessing PDF's
Page 19 of 79
Chapter 16
Page 20
App.MenuItemIsMarked()
AcroExch.App.SetActiveTool() Method
Sets the active tool according to the specified name, and determines whether the tool is to be used only once or should remain active after being used (persistent).
Parameter
Description
The name of the tool to set as the active tool. Hand - Hand tool. Note - Tool for making notes. (not in LE 2.0 or Reader) Select - Text selection tool. SelectGraphics - Graphics selection tool. (new in 2.0) Zoom - Tool for changing the zoom factor. Link - Link creation tool. (not in LE 2.0 or Reader) Thread - Thread creation tool. (not in LE 2.0 or Reader) A request indicating whether the tool should be persistent. A positive number indicates a request to the Acrobat application for the tool to remain active after it has been used. If 0 is specified, the Acrobat application reverts to the previously active tool after this tool is used once.
buttonName
persistent
AcroExch.App.SetFrame() Method
Sets the windows frame to the specified rectangle.
Parameter
iAcroRect
Description
An AcroExch.Rect specifying the window frame.
Dani Vainstein
Accessing PDF's
Page 20 of 79
Chapter 16
Page 21
true if the frame was set, false if iAcroRect is not of type AcroExch.Rect.
App.GetFrame() App.Maximize()
AcroExch.App.SetPreference() Method
Sets a value in the preferences file. Zoom values (used in avpDefaultZoomScale and avpMaxPageCacheZoom) must be passed as percentages and are automatically converted to fixed point numbers, e.g., 100 is automatically converted to 1.0. Colors (used in avpNoteColor) are automatically converted from RGB values to the representation used in the preferences file
Parameter
nType nValue
Description
The preferences item whose value is set. section lists the preferences items. The value to set.
App.GetLanguage() App.GetPreference()
AcroExch.App.Show() Method
Shows the Acrobat viewer. When the viewer is shown, the user is in control, and the Acrobat viewer does not automatically exit when the last automation object is destroyed.
returnValue = object.Show()
App.Hide()
AcroExch.App.ToolButtonIsEnabled() Method
Dani Vainstein
Accessing PDF's
Page 21 of 79
Chapter 16
Page 22
Parameter
buttonName
Description
The name of the button whose enabled state is obtained. A list a buttons can be seen in Appendix15, Table2 - Toolbar button names
true if the button is enabled, false if it is not enabled or does not exist.
Option Explicit Dim AcroApp, AcroAVDoc Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set AcroApp = CreateObject( "AcroExch.App" ) ' ** show Acrobat AcroApp.Show() ' ** Set AVDoc object Set AcroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If AcroAVDoc.Open( gPDFPath, "" ) Then Print "ZoomIn enabled? ---> " & acroApp.ToolButtonIsEnabled( "ZoomIn" ) Print "ZoomOut enabled? ---> " & acroApp.ToolButtonIsEnabled( "ZoomOut" ) Print "Zoom100 enabled? ---> " & acroApp.ToolButtonIsEnabled( "Zoom100" ) Print "Select enabled? ---> " & acroApp.ToolButtonIsEnabled( "Select" ) Print "Note enabled? ---> " & acroApp.ToolButtonIsEnabled( "Note" ) Print "Link enabled? ---> " & acroApp.ToolButtonIsEnabled( "Link" ) Print "FirstPage enabled? ---> " & acroApp.ToolButtonIsEnabled( "FirstPage" ) Print "FindDialog enabled? ---> " & acroApp.ToolButtonIsEnabled( "FindDialog" ) End If AcroApp.CloseAllDocs() AcroApp.Exit() Set AcroApp = Nothing
Dani Vainstein
Accessing PDF's
Page 22 of 79
Chapter 16
Page 23
AcroExch.App.ToolButtonRemove() Method
Removes the specified button from the toolbar.
Parameter
buttonName
Description
The name of the button to remove. A list a buttons can be seen in Appendix15, Table2 - Toolbar button names
AcroExch.App.Unlock() Method
Unlocks the Acrobat viewer if it was previously locked. This method clears a flag that indicates the viewer is locked. If you called App.Lock(), you should call App.Unlock() when you are done using OLE automation.
object.Unlock()
It is strongly recommended that Lock and Unlock be used if you call OpenInWindow.
Dani Vainstein
Accessing PDF's
Page 23 of 79
Chapter 16
Page 24
App.Lock()
AcroExch.AVDoc Object
A view of a PDF document in a window. This is a creatable interface. There is one AVDoc object per displayed document. Unlike a PDDoc object, an AVDoc object has a window associated with it.
AcroExch.AVDoc.BringToFront() Method
Brings the window to the front.
object.BringToFront()
AcroExch.AVDoc.ClearSelection() Method
Clears the current selection.
object.ClearSelection()
AcroExch.AVDoc.Close() Method
Closes a document. You can close all open AVDocs by calling App.CloseAllDocs().
object.Close( bNoClose )
Parameter
bNoClose
Description
If true, the document is closed without saving it. If false and the document has been modified, the user is asked whether or not the file should be saved.
Dani Vainstein
Accessing PDF's
Page 24 of 79
Chapter 16
Page 25
AcroExch.AVDoc.FindText() Method
Finds the specified text, scrolls so that it is visible, and highlights it.
Parameter
text caseSensitive wholeWordsOnly reset
Description
The text that is to be found. If true, the search is case-sensitive. If false, it is caseinsensitive. If true, the search matches only whole words. If false, it matches partial words. If true, the search begins on the first page of the document. If false, it begins on the current page.
Option Explicit Dim AcroApp, AcroAVDoc Dim gPDFPath, bReset, nCount gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set AcroApp = CreateObject( "AcroExch.App" ) ' ** show Acrobat AcroApp.Show() ' ** Set AVDoc object Set AcroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If AcroAVDoc.Open( gPDFPath, "" ) Then AcroAVDoc.BringToFront() bReset = True : nCount = 0 Do While AcroAVDoc.FindText( "Checkpoint", True, True, bReset ) bReset = False : nCount = nCount + 1 Wait 0, 200 Loop End If AcroApp.CloseAllDocs() AcroApp.Exit() Print "The word 'Checkpoint' was found " & nCount & " times." Set AcroApp = Nothing
Dani Vainstein
Accessing PDF's
Page 25 of 79
Chapter 16
Page 26
AcroExch.AVDoc.GetAVPageView() Method
Gets the AcroExch.AVPageView associated with an AcroExch.AVDoc.
The AcroExch.AVPageView.
AcroExch.AVDoc.GetFrame () Method
Gets the rectangle specifying the windows size and location.
Option Explicit Dim AcroApp, AcroAVDoc, AcroFrame Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set AcroApp = CreateObject( "AcroExch.App" ) ' ** show Acrobat AcroApp.Show() ' ** Set AVDoc object Set AcroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If AcroAVDoc.Open( gPDFPath, "" ) Then AcroAVDoc.BringToFront() Set AcroFrame = AcroAVDoc.GetFrame() Print "Frame Left --> " & AcroFrame.left Print "Frame Right --> " & AcroFrame.right Print "Frame Top --> " & AcroFrame.top Print "Frame Bottom --> " & AcroFrame.bottom End If
Dani Vainstein
Accessing PDF's
Page 26 of 79
Chapter 16
Page 27
AcroApp.CloseAllDocs() AcroApp.Exit() Set AcroFrame = Nothing Set AcroApp = Nothing : Set AcroAVDoc = Nothing
AcroExch.AVDoc.GetPDDoc () Method
Gets the AcroExch.PDDoc associated with an AcroExch.AVDoc.
The AcroExch.PDDoc.
AcroExch.AVDoc.GetTitle () Method
Gets the windows title.
title = object.GetTitle()
AcroExch.AVDoc.GetViewMode () Method
Gets the current document view mode ( pages only, pages and thumbnails, or pages and bookmarks ).
viewMode = object.GetViewMode()
The current document view mode. Will be one of the values in Appendix Table 1 View Mode Enumeration
Option Explicit
Dani Vainstein
Accessing PDF's
Page 27 of 79
Chapter 16
Page 28
Const PDDontCare = 0 Const PDUseNone = 1 Const PDUseThumbs = 2 Const PDUseBookmarks = 3 Const PDFullScreen = 4 Dim AcroApp, AcroAVDoc Dim gPDFPath, viewMode ** This function translates contants to strings. Private Function ViewModeStr( ByVal viewMode ) Select Case viewMode Case PDDontCare : Case PDUseNone : Case PDUseThumbs : Case PDFullScreen : End Select End Function gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set AcroApp = CreateObject( "AcroExch.App" ) ' ** show Acrobat AcroApp.Show() ' ** Set AVDoc object Set AcroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If AcroAVDoc.Open( gPDFPath, "" ) Then If AcroAVDoc.IsValid = False Then ExitTest() AcroAVDoc.BringToFront() viewMode = AcroAVDoc.GetViewMode Print "Current View mode is ---> " & ViewModeStr( viewMode ) ' ** Changing to PDDontCare Call AcroAVDoc.SetViewMode( PDDontCare ) viewMode = AcroAVDoc.GetViewMode() Print "Current View mode is ---> " & ViewModeStr( viewMode ) Wait 0, 500 ' ** Changing to PDUseNone Call AcroAVDoc.SetViewMode( PDUseNone ) viewMode = AcroAVDoc.GetViewMode() Print "Current View mode is ---> " & ViewModeStr( viewMode ) Wait 0, 500 ' ** Changing to PDUseThumbs Call AcroAVDoc.SetViewMode( PDUseThumbs ) viewMode = AcroAVDoc.GetViewMode() Print "Current View mode is ---> " & ViewModeStr( viewMode ) Wait 0, 500 ' ** Changing to PDUseBookmarks Call AcroAVDoc.SetViewMode( PDUseBookmarks ) viewMode = AcroAVDoc.GetViewMode() Print "Current View mode is ---> " & ViewModeStr( viewMode ) Wait 0, 500 ViewModeStr = "PDDontCare" ViewModeStr = "PDUseNone" ViewModeStr = "PDUseThumbs" ViewModeStr = "PDUseBookmarks" ViewModeStr = "PDFullScreen"
Case PDUseBookmarks :
Dani Vainstein
Accessing PDF's
Page 28 of 79
Chapter 16
Page 29
' ** Changing to PDFullScreen Call AcroAVDoc.SetViewMode( PDFullScreen ) viewMode = AcroAVDoc.GetViewMode() Print "Current View mode is ---> " & ViewModeStr( viewMode ) End If AcroApp.CloseAllDocs() AcroApp.Exit() Set AcroApp = Nothing : Set AcroAVDoc = Nothing
AcroExch.AVDoc.IsValid () Method
Determines whether the AcroExch.AVDoc is still valid. This method only checks whether the document has been closed or deleted; it does not check the internal structure of the document.
returnValue = object.IsValid()
AcroExch.AVDoc.Maximize() Method
Maximizes the window if bMaxSize is true.
object.Maximize( bMaximize )
Parameter
bMaximize
Description
Indicates whether window should be maximized.
AcroExch.AVDoc.Open() Method
Dani Vainstein
Accessing PDF's
Page 29 of 79
Chapter 16
Page 30
Opens a file. A new instance of AcroExch.AVDoc needs to be created for each displayed PDF file.
Parameter
fullPath tempTitle
Description
The full pathname of the file to open. An optional title for the window in which the file is opened. If tempTitle is Empty or the empty string (), it is ignored. Otherwise, tempTitle is used as the window title.
An application needs to explicitly close any AVDoc that it opens by calling AVDoc.Close(). The destructor for the AcroExch.AVDoc class does not call AVDoc.Close().
Option Explicit Dim AcroApp, AcroAVDoc Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set AcroApp = CreateObject( "AcroExch.App" ) ' ** show Acrobat AcroApp.Show() ' ** Set AVDoc object Set AcroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If AcroAVDoc.Open( gPDFPath, "NewTitle" ) Then If AcroAVDoc.IsValid = False Then ExitTest() AcroAVDoc.BringToFront() End If AcroApp.CloseAllDocs() AcroApp.Exit() Set AcroApp = Nothing : Set AcroAVDoc = Nothing
AcroExch.AVDoc.OpenInWindowEx() Method
Dani Vainstein
Accessing PDF's
Page 30 of 79
Chapter 16
Page 31
Parameter
Description
Parameter
firstPage lastPage psLevel binaryOK
Description
The first page to print. The first page in a PDDoc is page 0. The last page to print. The first page in a PDDoc is page 0. If 1, PostScript Level 1 operators are used. If 2, PostScript Level 2 operators are also used. If true, binary data may be included in the PostScript program. If false, all data is encoded as 7-bit ASCII. If true, the page is shrunk (if necessary) to fit within the imageable area of the printed page. If false, it is not.
shrinkToFit
AcroExch.AVDoc.SetFrame() Method
Sets the windows size and location.
Object.SetFrame( acroRect )
Parameter
acroRect
Description
AcroExch.Rect specifying the windows frame.
Dani Vainstein
Accessing PDF's
Page 31 of 79
Chapter 16
Page 32
AcroExch.AVDoc.SetTextSelection() Method
Sets the documents selection to the specified text selection.
Object.SetTextSelection( textSelect )
Parameter
textSelect
Description
The text selection to use.
PDDoc.CreateTextSelect() Creates from a rectangle PDPage.CreatePageHilite() Creates from a list of character offsets and counts PDPage.CreateWordHilite() Creates from a list of word offsets and counts After calling this method, use AVDoc.ShowTextSelect() to show the selection.
AcroExch.AVDoc.SetTitle() Method
Sets the windows title.
Object.SetTitle( title )
Parameter
title
Description
The title to set. This method cannot be used on document windows, but only on windows created by plug-ins.
AcroExch.AVDoc.SetViewMode() Method
Sets the mode in which the document will be viewed (pages only, pages and thumbnails, or pages and bookmarks).
Object.SetViewMode( viewMode )
Dani Vainstein
Accessing PDF's
Page 32 of 79
Chapter 16
Page 33
Parameter
viewMode
Description
The view mode to set. Must be one of the values listed in Appendix Table 1 View Mode Enumeration
AcroExch.AVDoc.ShowTextSelect () Method
Changes the view so that the current text selection is visible.
object.ShowTextSelect()
AcroExch.AVPageView Object
The area of the Acrobat applications window that displays the contents of a documents page. This is a non-creatable interface. Every AVDoc object has an AVPageView object and vice versa. The object provides access to the PDDoc and PDPage objects for the document being displayed.
Option Explicit Const AVZoomNoVary = 0 Const AVZoomFitVisibleWidth = 4 Dim AcroApp, AcroAVDoc, AcroAvPageView, AcroPDDoc Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set AcroApp = CreateObject( "AcroExch.App" ) ' ** show Acrobat AcroApp.Show() ' ** Set AVDoc object Set AcroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If AcroAVDoc.Open( gPDFPath, "" ) Then If AcroAVDoc.IsValid = False Then ExitTest() AcroAVDoc.BringToFront() Call AcroAVDoc.Maximize( True ) Print "Current pdf file title ---> " & AcroAVDoc.GetTitle() Set AcroPDDoc = AcroAVDoc.GetPDDoc()
Dani Vainstein
Accessing PDF's
Page 33 of 79
Chapter 16
Page 34
Print "File Name ---> " & AcroPDDoc.GetFileName() Print "Number of Pages ---> " & AcroPDDoc.GetNumPages() Set AcroAvPageView = AcroAVDoc.GetAVPageView() Call AcroAvPageView.Goto( 55 ) Print "Current Page ---> " & AcroAvPageView.GetPageNum() Print "Current Zoom ---> " & AcroAvPageView.GetZoom() Call AcroAvPageView.ZoomTo( AVZoomNoVary, 150 ) Print "Current Zoom ---> " & AcroAvPageView.GetZoom() AcroAvPageView.ReadPageDown() Wait 0, 500 Call AcroAvPageView.ZoomTo( AVZoomFitVisibleWidth, 50 ) End If AcroApp.CloseAllDocs() AcroApp.Exit() Set AcroApp = Nothing : Set AcroAVDoc = Nothing
AcroExch.AVPageView.DevicePointToPage () Method
Converts the coordinates of a point from device space to user space.
object.DevicePointToPage( acroPoint )
Parameter
acroPoint
Description
The AcroExch.Point whose coordinates are converted.
AVPageView.PointToDevice()
AcroExch.AVPageView.DoGoBack () Method
Goes to the previous view on the view history stack, if any.
Dani Vainstein
Accessing PDF's
Page 34 of 79
Chapter 16
Page 35
object.DoGoBack()
AVPageView.DoGoForward()
AcroExch.AVPageView.DoGoForward() Method
Goes to the next view on the view history stack, if any.
object.DoGoForward()
AVPageView.DoGoBack()
AcroExch.AVPageView.GetAVDoc() Method
Gets the AcroExch.AVDoc associated with the current page.
The AcroExch.AVDoc.
AcroExch.AVPageView.GetDoc() Method
Gets the AcroExch.PDDoc corresponding to the current page.
Chapter 16
Page 36
AcroExch.AVPageView.GetPage() Method
Gets the page number of the page. The first page in a document is page zero.
The AcroExch.PDPage.
AcroExch.AVPageView.GetPageNum() Method
Gets the page number of the page. The first page in a document is page zero.
pageNum = object.GetPageNum()
Dani Vainstein
Accessing PDF's
Page 36 of 79
Chapter 16
Page 37
AcroExch.AVPageView.GetZoom() Method
Gets the current zoom factor, specified as a percent, e.g., 100 is returned if the magnification is 1.0.
zoom = object.GetZoom()
AcroExch.AVPageView.GetZoomType() Method
Gets the current zoom type.
zoomType = object.GetZoomType()
AcroExch.AVPageView.Goto() Method
Goes to the specified page.
Object.Goto( nPage )
Parameter
nPage
Description
Page number of the destination page. First page in a PDDoc is page 0.
true if the Acrobat viewer successfully went to the page, false otherwise.
Dani Vainstein
Accessing PDF's
Page 37 of 79
Chapter 16
Page 38
object.ReadPageDown() object.ReadPageUp()
AcroExch.AVPageView.ScrollTo() Method
Scrolls to the specified location on the current page.
Parameter
nX nY
Description
xcoordinate of the destination. ycoordinate of the destination.
true if the Acrobat viewer successfully scrolled to the specified location, false otherwise.
AVPageView.DoGoBack
Dani Vainstein
Accessing PDF's
Page 38 of 79
Chapter 16
Page 39
AcroExch.AVPageView.ZoomTo() Method
Zooms to a specified magnification.
Parameter
nType nScale
Description
Zoom type. On of the Zoom Strategy The desired zoom factor, expressed as a percent, e.g., 100 is a magnification of 1.0
AcroExch.HiliteList Object
A highlighted region of text in a PDF document. This is a creatable interface. This object has a single method and is used by the PDPage object to create PDTextSelect objects.
AcroExch.HiliteList.Add() Method
Adds the highlight specified by nOffset and nLength to the current highlight list. Highlight lists are used to highlight one or more contiguous groups of characters or words on a single page. Highlight lists are used both for character- and word-based highlighting, although a single highlight list cannot contain a mixture of character and word highlights. After creating a highlight list, use PDPage.CreatePageHilite() or PDPage.CreateWordHilite() (depending on whether the highlight list contains character or word highlights) to create a text selection from the highlight list.
Dani Vainstein
Accessing PDF's
Page 39 of 79
Chapter 16
Page 40
Parameter
nOffset nLength
Description
Offset of the first word or character to highlight. The first word/character on a page has an offset of zero. The number of consecutive words or characters to highlight.
PDPage.CreatePageHilite PDPage.CreateWordHilite
AcroExch.PDAnnot Object
An annotation on a page in a PDF file. This is a non-creatable interface. Acrobat applications have two built-in annotation types: PDTextAnnot and PDLinkAnnot. The object provides access to the physical attributes of the annotation. Plug-ins may add movie and Widget (form field) annotations, and developers can define new annotation subtypes by creating new annotation handlers.
AcroExch.PDBookmark Object
A bookmark for a page in a PDF file. This is a creatable interface. Each bookmark has a title that appears on screen, and an action that specifies what happens when a user clicks on the bookmark. Bookmarks can either be created interactively by the user through the Acrobat applications user interface or programmatically generated. The typical action for a usercreated bookmark is to move to another location in the current document, although any action can be specified.
AcroExch.PDBookmark.Destroy () Method
Destroys a bookmark. Note that it is not possible to create a bookmark with OLE.
returnValue = Object.Destroy()
false if the Acrobat viewer does not support editing (making it impossible to delete the bookmark), true otherwise.
PDBookmark.IsValid
Dani Vainstein
Accessing PDF's
Page 40 of 79
Chapter 16
Page 41
AcroExch.PDBookmark.GetByTitle() Method
Gets the bookmark that has a specified title. The AcroExch.PDBookmark object is set to the specified bookmark as a side effect of the method; it is not the methods return value. You cannot enumerate bookmark titles with this method.
Parameter
pdDoc bookmarkTitle
Description
The document (AcroExch.PDDoc object) containing the bookmark. The title of the bookmark to get. The capitalization of the title must match that in the bookmark.
true if the specified bookmark exists (the method determines this using the PDBookmark.IsValid() method), false otherwise.
PDBookmark.GetTitle PDBookmark.SetTitle
Option Explicit Private Const PDUseBookmarks = 3 Dim acroApp, avDoc, pdDoc, pdBookmark Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set acroApp = CreateObject( "AcroExch.App" ) ' ** Set AVDoc object Set avDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If avDoc.Open( gPDFPath, "Accessing PDF's" ) Then If avDoc.IsValid = False Then ExitTest() With acroApp .Show() .Maximize( True ) End With avDoc.BringToFront() ' ** Setting view mode to bookmarks... Call avDoc.SetViewMode( PDUseBookmarks ) Set pdBookmark = CreateObject( "AcroExch.PDBookmark" ) If pdBookmark.GetByTitle( avDoc.GetPDDoc(), "Recording Tests" ) Then Print "Bookmark Title ---> " & pdBookmark.GetTitle() Print "Page before perform bookmark ---> " & avDoc.GetAVPageView.GetPageNum()
Dani Vainstein
Accessing PDF's
Page 41 of 79
Chapter 16
Page 42
Call pdBookmark.Perform( avDoc ) Print "Page after perform bookmark ---> End If End If AcroApp.CloseAllDocs() AcroApp.Exit() Set pdBookmark = Nothing Set pdPage = Nothing : Set AcroApp = Nothing : Set avDoc = Nothing " & avDoc.GetAVPageView.GetPageNum()
AcroExch.PDBookmark.GetTitle() Method
Gets a bookmarks title (up to 256 characters).
returnValue = Object.GetTitle()
The title.
PDBookmark.GetByTitle PDBookmark.SetTitle
AcroExch.PDBookmark.IsValid() Method
Determines whether the bookmark is valid. This method only checks whether the bookmark has been deleted; it does not thoroughly check the bookmarks data structures.
returnValue = Object.IsValid()
PDBookmark.Destroy
AcroExch.PDBookmark.Perform() Method
Performs a bookmarks action. Dani Vainstein Accessing PDF's Page 42 of 79
Chapter 16
Page 43
Parameter
avDoc
Description
AcroExch.AVDoc in which the bookmark is located.
PDBookmark.IsValid
AcroExch.PDBookmark.SetTitle() Method
Sets a bookmarks title.
Parameter
newTitle
Description
The title to set.
false if the Acrobat viewer does not support editing, true otherwise.
PDBookmark.GetByTitle PDBookmark.GetTitle
AcroExch.PDDoc Object
The underlying PDF representation of a document. This is a creatable interface. There is a correspondence between a PDDoc object and an ASFile object (an opaque representation of an open file made available through an interface encapsulating Acrobats access to file services), and the PDDoc object is the hidden object behind every AVDoc object. An ASFile object may have zero or more underlying files, so a PDF file does not always correspond to a single disk file. For example, an ASFile object may provide access to PDF data in a database. Through PDDoc objects, your application can perform most of the Document menu items from Acrobat (delete pages, replace pages, and so on), create and delete thumbnails, and set and retrieve document information fields.
AcroExch.PDDoc.AcquirePage () Method
Dani Vainstein
Accessing PDF's
Page 43 of 79
Chapter 16
Page 44
Parameter
nPage
Description
The number of the page to acquire. The first page in a PDDoc is page 0.
true if the Acrobat viewer successfully scrolled to the specified location, false otherwise.
AcroExch.PDDoc.ClearFlags () Method
Clears a documents flags. The flags indicate whether the document has been modified, whether the document is a temporary document and should be deleted when closed, and the version of PDF used in the file. This method can only be used to clear, not to set, the flag bits.
Object.ClearFlags( nFlags )
Parameter
nFlags
Description
Flags to be cleared. See PDDoc.GetFlags for a description of the flags. The flags PDDocWasRepaired, PDDocNewMajorVersion, PDDocNewMinorVersion, and PDDocOldVersion are read-only and cannot be cleared.
PDDoc.GetFlags PDDoc.SetFlags
Dani Vainstein
Accessing PDF's
Page 44 of 79
Chapter 16
Page 45
AcroExch.PDDoc.Close () Method
Closes a file.
Object.Close()
If PDDoc and AVDoc are constructed with the same file, PDDoc.Close will destroy both objects (which closes the document in the viewer).
AcroExch.PDDoc.Create () Method
Creates a new AcroExch.PDDoc.
true if the document is created successfully, false if it is not or if the Acrobat viewer does not support editing.
AcroExch.PDDoc.CreateTextSelect () Method
Creates a text selection from the specified rectangle on the specified page. After creating the text selection, use the AVDoc.SetTextSelection method to use it as the documents selection, and use AVDoc.ShowTextSelect to show the selection.
Parameter
nPage
Description
The page on which the selection is created. The first page in a PDDoc Accessing PDF's Page 45 of 79
Dani Vainstein
Chapter 16
Page 46
An AcroExch.PDTextSelect containing the text selection. Returns Nothing if the text selection was not created successfully.
AVDoc.ClearSelection AVDoc.SetTextSelection AVDoc.ShowTextSelect PDPage.CreatePageHilite PDPage.CreateWordHilite PDTextSelect.Destroy PDTextSelect.GetBoundingRect PDTextSelect.GetNumText PDTextSelect.GetPage PDTextSelect.GetText
AcroExch.PDDoc.CreateThumbs () Method
Creates thumbnail images for the specified page range in a document.
Parameter
nFirstPage nLastPage
Description
First page for which thumbnail images are created. Last page for which thumbnail images are created.
true if thumbnail images were created successfully, false if they were not or if the Acrobat viewer does not support editing.
AVDoc.DeleteThumbs
AcroExch.PDDoc.CropPages () Method
Crops the pages in a specified range in a document. This method ignores the request if either the width or height of the crop box is less than 72 points (one inch).
Dani Vainstein
Accessing PDF's
Page 46 of 79
Chapter 16
Page 47
Parameter
nStartPage nEndPage
Description
First page that is cropped. The first page in a PDDoc object is page 0. Last page that is cropped. Value indicating which pages in the range are cropped. Must be one of the following:
nEvenOrOddPagesOnly
0 means crop all pages in the range 1 means crop only odd pages in the range 2 means crop only even pages in the range An AcroExch.Rect specifying the cropping rectangle, which is specified in user space.
acroRect
PDPage.CropPages
AcroExch.PDDoc.DeletePages () Method
Deletes pages from a file.
Parameter
nStartPage nEndPage
Description
The first page to be deleted. The first page in a PDDoc object is page 0. The last page to be deleted.
true if the pages were successfully deleted. Returns false if they were not or if the Acrobat viewer does not support editing.
PDDoc.AcquirePage PDDoc.DeletePages PDDoc.GetNumPages PDDoc.InsertPages PDDoc.MovePage PDDoc.ReplacePages Dani Vainstein Accessing PDF's Page 47 of 79
Chapter 16
Page 48
AcroExch.PDDoc.DeleteThumbs () Method
Deletes thumbnail images from the specified pages in a document.
Parameter
nStartPage nEndPage
Description
First page whose thumbnail image is deleted. The first page in a PDDoc object is page 0. Last page whose thumbnail image is deleted.
true if the thumbnails were deleted, false if they were not deleted or if the Acrobat viewer does not support editing.
PDDoc.CreateThumbs
AcroExch.PDDoc.GetFileName () Method
Gets the name of the file associated with this AcroExch.PDDoc.
returnValue = Object.GetFileName()
PDDoc.Save
AcroExch.PDDoc.GetFlags () Method
Gets a documents flags. The flags indicate whether the document has been modified, whether the document is a temporary document and should be deleted when closed, and the version of PDF used in the file.
returnValue = Object.GetFlags()
Dani Vainstein
Accessing PDF's
Page 48 of 79
Chapter 16
Page 49
PDDoc.ClearFlags PDDoc.SetFlags
AcroExch.PDDoc.GetInfo () Method
Gets the value of a specified key in the documents Info dictionary. A maximum of 512 bytes are returned.
Parameter
infoKey
Description
The key whose value is obtained.
The string if the value was read successfully. Returns an empty string if the key does not exist or its value cannot be read.
PDDoc.SetInfo
Option Explicit Dim acroApp, acroAVDoc, acroPDDoc Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set acroApp = CreateObject( "AcroExch.App" ) ' ** show acrobat acroApp.Show() ' ** Set AVDoc object Set acroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If acroAVDoc.Open( gPDFPath, Empty ) Then If acroAVDoc.IsValid = False Then ExitTest() acroAVDoc.BringToFront() Call acroAVDoc.Maximize( True ) Print "Current pdf title ---> " & acroAVDoc.GetTitle() Set acroPDDoc = acroAVDoc.GetPDDoc() Print "File Name ---> " & acroPDDoc.GetFileName() Print "Number of Pages ---> " & acroPDDoc.GetNumPages() Print "Flags ---> " & acroPDDoc.GetFlags() Print "Instance ID ---> " & acroPDDoc.GetInstanceID() Print "Page Mode ---> " & acroPDDoc.GetPageMode() Print "Permanent ID ---> " & acroPDDoc.GetPermanentID()
Dani Vainstein
Accessing PDF's
Page 49 of 79
Chapter 16
Page 50
Print "Info::Title ---> " & acroPDDoc.GetInfo( "Title" ) Print "Info::Creator ---> " & acroPDDoc.GetInfo( "Creator" ) Print "Info::Keywords ---> " & acroPDDoc.GetInfo( "Keywords" ) Print "Info::Subject ---> " & acroPDDoc.GetInfo( "Subject" ) Print "Info::Author ---> " & acroPDDoc.GetInfo( "Author" ) Print "Info::Created ---> " & acroPDDoc.GetInfo( "Created" ) Print "Info::Modified ---> " & acroPDDoc.GetInfo( "Modified" ) Print "Info::Producer ---> " & acroPDDoc.GetInfo( "Producer" ) End If AcroApp.CloseAllDocs() AcroApp.Exit() Set AcroApp = Nothing : Set acroAVDoc = Nothing : Set acroPDDoc = Nothing
AcroExch.PDDoc.GetInstanceID () Method
Gets the instance ID (the second element) from the ID array in the documents trailer.
returnValue = Object.GetInstanceID()
A string whose maximum length is 32 characters, containing the documents instance ID.
PDDoc.GetPermanentID
AcroExch.PDDoc.GetJSObject () Method
Gets a dual interface to the JavaScript object associated with the PDDoc. This allows Automation clients full access to both built-in and user-defined JavaScript methods available in the document. For detailed information on this method, see Programming Acrobat JavaScript Using Visual Basic. At http://www.adobe.com/devnet/acrobat/pdfs/VBJavaScript.pdf Dani Vainstein Accessing PDF's Page 50 of 79
Chapter 16
Page 51
The interface to the JavaScript object if the call succeeded, Nothing otherwise.
Acrobat 7.0 includes a plug-in that can scan a document for spelling errors. This plug-in also provides JavaScript methods that can be accessed using a JSObject.
Option Explicit Dim pdDoc, jso Dim path, word, result Dim i,j, foundErr path = "C:\QTTutorial.pdf" foundErr = False Set pdDoc = CreateObject( "AcroExch.PDDoc" ) If pdDoc.Open( path ) Then Set jso = pdDoc.GetJSObject If Not jso Is Nothing Then count = jso.getPageNumWords( 42 ) For i = 0 To count - 1 word = jso.getPageNthWord( 42, i, true ) If VarType( word ) = vbString Then result = jso.spell.checkWord( word ) If IsArray(result) Then foundErr = True Print word & " is misspelled." Print "Suggestions:" For j = LBound( result ) To UBound( result ) Print result( j ) Next Print String( 90, "-" ) End If End If Next Set jso = Nothing pdDoc.Close If Not foundErr Then Print "No spelling errors found in " & path End If End If Else Print "Failed to open " & path End If Set pdDoc = Nothing
AcroExch.PDDoc.GetNumPages () Method
Dani Vainstein
Accessing PDF's
Page 51 of 79
Chapter 16
Page 52
returnValue = Object.GetNumPages()
AcroExch.PDDoc.GetPageMode () Method
Gets a value indicating whether the Acrobat application is currently displaying only pages, pages and thumbnails, or pages and bookmarks.
returnValue = Object.GetPageMode()
The current page mode. Will be one of the values in Appendix 16 - View Mode
Enumeration
AVPageView.SetPageMode
AcroExch.PDDoc.GetPermanentID () Method
Gets the permanent ID (the first element) from the ID array in the documents trailer.
returnValue = Object.GetPermanentID()
A string whose maximum length is 32 characters, containing the documents permanent ID.
AVPageView.GetInstanceID
AcroExch.PDDoc.InsertPages () Method
Dani Vainstein
Accessing PDF's
Page 52 of 79
Chapter 16
Page 53
Inserts the specified pages from the source document after the indicated page within the current document.
AcroExch.PDDoc.MovePage () Method
Moves a page to another location within the same document.
AcroExch.PDDoc.Open () Method
Opens a file. A new instance of AcroExch.PDDoc must be created for each open PDF file.
Parameter
fullPath
Description
Full pathname of the file to be opened.
AcroExch.PDDoc.OpenAVDoc () Method
Opens a window and displays the document in it.
Parameter
title
Description
The title to be used for the window. A default title is used if title is Empty, or an empty string.
Dani Vainstein
Accessing PDF's
Page 53 of 79
Chapter 16
Page 54
AcroExch.PDDoc.ReplacePages () Method
Replaces the indicated pages in the current document with those sepcified from the source document.
AcroExch.PDDoc.Save () Method
Opens a window and displays the document in it.
Parameter
Description
Specifies the way in which the file should be saved. PDSaveIncremental: Write changes only, not the complete file. This will always result in a larger file, even if objects have been deleted. PDSaveFull: Write the entire file to the filename specified by szFullPath.
nType
PDSaveCopy: Write a copy of the file into the file specified by szFullPath, but keep using the old file. This flag can only be specified if PDSaveFull is also used. PDSaveCollectGarbage: Remove unreferenced objects; this often reduces the file size, and its usage is encouraged. This flag can only be specified if PDSaveFull is also used. PDSaveLinearized: Save the file in a linearized fashion, providing hint tables. This allows the PDF file to be byte-served. This flag can only be specified if PDSaveFull is also used.
fullPath
true if the document was successfully saved. Returns false if it was not or if the Acrobat application does not support editing.
Dani Vainstein
Accessing PDF's
Page 54 of 79
Chapter 16
Page 55
App.GetFileName
AcroExch.PDDoc.SetFlags () Method
Sets a documents flags indicating whether the document has been modified, whether the document is a temporary document and should be deleted when closed, and the version of PDF used in the file. This method can only be used to set, not to clear, the flag bits.
AcroExch.PDDoc.SetInfo () Method
Sets the value of a key in a documents Info dictionary.
AcroExch.PDDoc.SetPageMode () Method
Sets the page mode in which a document is to be opened: display only pages, pages and thumbnails, or pages and bookmarks.
Object.SetPageMode( pageMode )
Parameter
pageMode
Description
The page mode to be set. Must be one of the values of View Mode
Enumeration
PDDoc.GetPageMode PDDoc.SetPageMode
AcroExch.PDPage Object
A single page in the PDF representation of a document. This is a non-creatable interface. Just as PDF files are partially composed of their pages, PDDoc objects are composed of PDPage objects. A page contains a series of objects representing the objects drawn on the page (PDGraphic objects), a list of resources used in drawing the page, annotations (PDAnnot objects), an optional thumbnail image of the page, and the beads used in any articles that occur on the page. The first page in a PDDoc object is page 0.
AcroExch.PDPage.AddAnnot () Method
Adds a specified annotation at a specified location in the pages annotation array.
Dani Vainstein
Accessing PDF's
Page 55 of 79
Chapter 16
Page 56
Parameter
nAfterIndex pdAnnot
Description
Location in the pages annotation array to add the annotation. The first annotation on a page has an index of zero. AcroExch.PDAnnot to add.
false if the Acrobat viewer does not support editing, true otherwise.
PDPage.AddNewAnnot PDPage.RemoveAnnot
AcroExch.PDPage.AddNewAnnot () Method
Creates a new text annotation and adds it to the page.
Parameter
nAfterIndex subType pdAnnot
Description
Location in the pages annotation array to add the annotation. The first annotation on a page has an index of zero. Subtype of the annotation to create. Must be Text. AcroExch.PDAnnot to add.
PDPage.AddAnnot() PDPage.RemoveAnnot()
AcroExch.PDPage.CreatePageHilite () Method
Creates a text selection from a list of character offsets and character counts on a single page. The text selection can then be set as the current selection using AVDoc.SetTextSelection(), and the view can be set to show the selection using AVDoc.ShowTextSelect().
Dani Vainstein
Accessing PDF's
Page 56 of 79
Chapter 16
Page 57
Parameter
acroHiliteList
Description
Highlight list for which a text selection is created. Use HiliteList.Add() to create a highlight list.
The AcroExch.PDTextSelect containing the text selection, or Nothing if the selection could not be created.
AVDoc.ClearSelection AVDoc.SetTextSelection AVDoc.ShowTextSelect HiliteList.Add PDDoc.CreateTextSelect PDPage.CreateWordHilite PDTextSelect.Destroy PDTextSelect.GetBoundingRect PDTextSelect.GetNumText PDTextSelect.GetPage PDTextSelect.GetText
Option Explicit Dim acroApp, acroAVDoc, acroPDDoc, acroRect, acroPDPage, acroPageView Dim acroHiList, acroPDTextSel Dim gPDFPath, nElem gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set acroApp = CreateObject( "AcroExch.App" ) ' ** show acrobat acroApp.Show() ' ** Set AVDoc object Set acroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If acroAVDoc.Open( gPDFPath, "Accessing PDF's" ) Then If acroAVDoc.IsValid = False Then ExitTest() acroAVDoc.BringToFront() Call acroAVDoc.Maximize( True ) Print "Current pdf title ---> " & acroAVDoc.GetTitle() Set acroPDDoc = acroAVDoc.GetPDDoc() Print "File Name ---> " & acroPDDoc.GetFileName() Print "Number of Pages ---> " & acroPDDoc.GetNumPages() ' ** Create a list object Set acroHiList = CreateObject( "AcroExch.HiliteList" ) ' ** Create a hilite that includes all possible text on the page
Dani Vainstein
Accessing PDF's
Page 57 of 79
Chapter 16
Page 58
Call acroHiList.Add( 30, 11 ) ' ** Create either a page or word hilite based on the list Set acroPageView = acroAVDoc.GetAVPageView() Call acroPageView.Goto( 25 ) Set acroPDPage = acroPageView.GetPage() Set acroPDTextSel = acroPDPage.CreatePageHilite( acroHiList ) If acroPDTextSel Is Nothing Then Print "Failed to CreatePageHilite." ExitTest() End If ' ** Set that as the current text selection and show it Call acroAVDoc.SetTextSelection( acroPDTextSel ) Call acroAVDoc.ShowTextSelect() ' ** Get the number of words in the text selection and the first word in selection If acroPDTextSel.GetNumText > 0 Then Print "Current Selection Page ---> " & acroPDTextSel.GetPage() Print "Selection rect bottom size ---> " & acroPDTextSel.GetBoundingRect.bottom Print "Selection rect top size ---> " & acroPDTextSel.GetBoundingRect.top Print "Selection rect left size ---> " & acroPDTextSel.GetBoundingRect.left Print "Selection rect right size ---> " & acroPDTextSel.GetBoundingRect.right Print "Num of words in text select = " & acroPDTextSel.GetNumText Print "1st Word='" & acroPDTextSel.GetText( 0 ) & "'" Else Print "There are no words in the text selection" End If Call acroPDTextSel.Destroy() End If AcroApp.CloseAllDocs() AcroApp.Exit() Set acroPDTextSel = Nothing : Set acroRect = Nothing Set acroHiList = Nothing : Set acroPageView = Nothing : Set acroPDPage = Nothing Set AcroApp = Nothing : Set AcroAVDoc = Nothing
AcroExch.PDPage.CreateWordHilite () Method
Creates a text selection from a list of word offsets and word counts on a single page. The text selection can then be set as the current selection using AVDoc.SetTextSelection(), and the view can be set to show the selection using AVDoc.ShowTextSelect().
Dani Vainstein
Accessing PDF's
Page 58 of 79
Chapter 16
Page 59
Parameter
acroHiliteList
Description
Highlight list for which a text selection is created. Use HiliteList.Add() to create a highlight list.
AVDoc.ClearSelection AVDoc.SetTextSelection AVDoc.ShowTextSelect HiliteList.Add PDDoc.CreateTextSelect PDPage.CreatePageHilite PDTextSelect.Destroy PDTextSelect.GetBoundingRect PDTextSelect.GetNumText PDTextSelect.GetPage PDTextSelect.GetText
Option Explicit Dim acroApp, acroAVDoc, acroPDDoc, acroRect, acroPDPage, acroPageView Dim acroHiList, acroPDTextSel Dim gPDFPath, nElem gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set acroApp = CreateObject( "AcroExch.App" ) ' ** show acrobat acroApp.Show() ' ** Set AVDoc object Set acroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If acroAVDoc.Open( gPDFPath, "Accessing PDF's" ) Then If acroAVDoc.IsValid = False Then ExitTest() acroAVDoc.BringToFront() Call acroAVDoc.Maximize( True ) Print "Current pdf title ---> " & acroAVDoc.GetTitle() Set acroPDDoc = acroAVDoc.GetPDDoc() Print "File Name ---> " & acroPDDoc.GetFileName() Print "Number of Pages ---> " & acroPDDoc.GetNumPages() ' ** Create a list object Set acroHiList = CreateObject( "AcroExch.HiliteList" )
Dani Vainstein
Accessing PDF's
Page 59 of 79
Chapter 16
Page 60
' ** Create a hilite that includes all possible text on the page Call acroHiList.Add( 0, 32767 ) ' ** Create either a page or word hilite based on the list Set acroPageView = acroAVDoc.GetAVPageView() Call acroPageView.Goto( 25 ) Set acroPDPage = acroPageView.GetPage() Set acroPDTextSel = acroPDPage.CreateWordHilite( acroHiList ) If acroPDTextSel Is Nothing Then Print "Failed to CreateWordHilite." ExitTest() End If ' ** Set that as the current text selection and show it Call acroAVDoc.SetTextSelection( acroPDTextSel ) Call acroAVDoc.ShowTextSelect() ' ** Get the number of words in the text selection and the first word in selection If acroPDTextSel.GetNumText > 0 Then Print "Current Selection Page ---> " & acroPDTextSel.GetPage() Print "Selection rect bottom size ---> " & acroPDTextSel.GetBoundingRect.bottom Print "Selection rect top size ---> " & acroPDTextSel.GetBoundingRect.top Print "Selection rect left size ---> " & acroPDTextSel.GetBoundingRect.left Print "Selection rect right size ---> " & acroPDTextSel.GetBoundingRect.right Print "Num of words in text select = " & acroPDTextSel.GetNumText Print "1st Word='" & acroPDTextSel.GetText( 0 ) & "'" Else Print "There are no words in the text selection" End If Call acroPDTextSel.Destroy() End If AcroApp.CloseAllDocs() AcroApp.Exit() Set acroPDTextSel = Nothing : Set acroRect = Nothing Set acroHiList = Nothing : Set acroPageView = Nothing : Set acroPDPage = Nothing Set AcroApp = Nothing : Set AcroAVDoc = Nothing
AcroExch.PDPage.GetAnnotIndex() Method
Gets the index (in the pages annotation array) of the specified annotation.
Dani Vainstein
Accessing PDF's
Page 60 of 79
Chapter 16
Page 61
Parameter
pdAnnot
Description
The AcroExch.PDAnnot whose index is obtained.
PDPage.GetAnnot() PDPage.GetNumAnnots()
AcroExch.PDPage.GetDoc() Method
Gets the AcroExch.PDDoc associated with the page.
AcroExch.PDPage.GetNumAnnots() Method
Gets the number of annotations on the page.
returnValue = object.GetNumAnnots()
PDPage.GetAnnot()
Dani Vainstein
Accessing PDF's
Page 61 of 79
Chapter 16
Page 62
PDPage.GetAnnotIndex()
AcroExch.PDPage.GetNumber() Method
Gets the page number of the current page. The first page in a document is page zero.
returnValue = object.GetNumber()
The page number of the current page. The first page in a PDDoc is page 0.
AcroExch.PDPage.GetRotate() Method
Gets the rotation value for the current page.
a number that represents onr of the values form Page Rotation Enumeration at Appendix 16
AcroExch.PDPage.GetSize() Method
Gets a pages width and height. Dani Vainstein Accessing PDF's Page 62 of 79
Chapter 16
Page 63
AcroExch.PDPage.RemoveAnnot() Method
Removes the specified annotation from the pages annotation array.
false if the Acrobat viewer does not support editing, true otherwise.
AcroExch.PDPage.SetRotate () Method
Sets the rotation for the current page.
Parameter
acroHiliteList
Description
Rotation value. See 0Page Rotation Enumeration at Appendix 16
false if the Acrobat viewer does not support editing, true otherwise.
Chapter 16
Page 64
Option Explicit Private Const pdRotate0 = 0 Private Const pdRotate90 = 90 Private Const pdRotate180 = 180 Private Const pdRotate270 = 270 Dim acroApp, avDoc, pdDoc, pdPage Dim acroPoint Dim gPDFPath gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object Set acroApp = CreateObject( "AcroExch.App" ) ' ** show acrobat acroApp.Show() ' ** Set AVDoc object Set avDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If avDoc.Open( gPDFPath, "Accessing PDF's" ) Then If avDoc.IsValid = False Then ExitTest() avDoc.BringToFront() Call avDoc.Maximize( True ) Print "Current pdf title ---> " & avDoc.GetTitle() Call avDoc.GetAVPageView.Goto( 18 ) Set pdDoc = avDoc.GetPDDoc() Set pdPage = avDoc.GetPDDoc.AcquirePage( 18 ) Print "Page Number ---> " & pdPage.GetNumber() Set acroPoint = pdPage.GetSize() Print "Page Size X ---> " & acroPoint.x Print "Page Size Y ---> " & acroPoint.y Set acroPoint = Nothing ' ** Rotating 90 deg ... If pdPage.SetRotate( pdRotate90 ) Then Print "Page was successfully rotated to ---> " & pdPage.GetRotate() Wait 1 End If ' ** Rotating 270 deg ... If pdPage.SetRotate( pdRotate270 ) Then Print "Page was successfully rotated to ---> " & pdPage.GetRotate() Wait 1 End If ' ** Restoring ... Call pdPage.SetRotate( pdRotate0 ) End If AcroApp.CloseAllDocs() AcroApp.Exit() Set acroApp = Nothing : Set avDoc = Nothing : Set pdDoc = Nothing Set pdPage = Nothing
Dani Vainstein
Accessing PDF's
Page 64 of 79
Chapter 16
Page 65
AcroExch.PDTextSelect Object
A selection of text on a single page that may contain more than one disjointed group of words. This is a non-creatable interface. A text selection is specified by one or more ranges of text, with each range containing the word numbers of the selected words. Each range specifies a start and end word, where "start" is the first of a series of selected words and "end" is the next word after the last in the selection.
AcroExch.PDTextSelect.Destroy () Method
Destroys a text selection.
Object.Destroy()
AVDoc.ClearSelection AVDoc.SetTextSelection AVDoc.ShowTextSelect PDDoc.CreateTextSelect PDPage.CreatePageHilite PDPage.CreateWordHilite PDTextSelect.GetBoundingRect PDTextSelect.GetNumText PDTextSelect.GetPage PDTextSelect.GetText
AcroExch.PDTextSelect.GetBoundingRect () Method
Gets a text selections bounding rectangle.
Dani Vainstein
Accessing PDF's
Page 65 of 79
Chapter 16
Page 66
AVDoc.ClearSelection AVDoc.SetTextSelection AVDoc.ShowTextSelect PDDoc.CreateTextSelect PDPage.CreatePageHilite PDPage.CreateWordHilite PDTextSelect.Destroy PDTextSelect.GetNumText PDTextSelect.GetPage PDTextSelect.GetText
AcroExch.PDTextSelect.GetNumText () Method
Gets the number of text elements in a text selection. Use this method to determine how many times to call the PDTextSelect.GetText() method to obtain all of a text selections text.
returnValue = Object.GetNumText()
AVDoc.ClearSelection() AVDoc.SetTextSelection() AVDoc.ShowTextSelect() PDDoc.CreateTextSelect() PDPage.CreatePageHilite() PDPage.CreateWordHilite() PDTextSelect.Destroy() PDTextSelect.GetBoundingRect() PDTextSelect.GetPage() PDTextSelect.GetText()
Option Explicit Dim acroApp, acroAVDoc, acroPDDoc, acroRect, PDTextSelect Dim gPDFPath, nElem gPDFPath = "C:\QTTutorial.pdf" ' ** Initialize Acrobat by creating App object
Dani Vainstein
Accessing PDF's
Page 66 of 79
Chapter 16
Page 67
Set acroApp = CreateObject( "AcroExch.App" ) ' ** show acrobat acroApp.Show() ' ** Set AVDoc object Set acroAVDoc = CreateObject( "AcroExch.AVDoc" ) ' ** open the PDF If acroAVDoc.Open( gPDFPath, "Accessing PDF's" ) Then If acroAVDoc.IsValid = False Then ExitTest() acroAVDoc.BringToFront() Call acroAVDoc.Maximize( True ) Print "Current pdf title ---> " & acroAVDoc.GetTitle() Set acroPDDoc = acroAVDoc.GetPDDoc() Print "File Name ---> " & acroPDDoc.GetFileName() Print "Number of Pages ---> " & acroPDDoc.GetNumPages() Set acroRect = CreateObject( "AcroExch.Rect" ) acroRect.Bottom = 380 : acroRect.Top = 400 acroRect.Left = 100 : acroRect.Right = 500 ' ** Selecting page 42 ( index is 43 ) Set PDTextSelect = acroPDDoc.CreateTextSelect( 43, acroRect ) If PDTextSelect Is Nothing Then Print "Unable to Create TextSelect object." ExitTest() End If Call acroAVDoc.SetTextSelection( PDTextSelect ) Call acroAVDoc.ShowTextSelect() Print "Selection Page Number ---> " & PDTextSelect.GetPage() Print "Selection Text Elements ---> " & PDTextSelect.GetNumText() ' ** Looping through text elements For nElem = 0 To PDTextSelect.GetNumText() - 1 Print "Text # " & nElem & " ---> '" & PDTextSelect.GetText( nElem ) & "'" Next ' ** Destroying Text Selection Call PDTextSelect.Destroy() End If AcroApp.CloseAllDocs() AcroApp.Exit() Set PDTextSelect = Nothing : Set acroRect = Nothing Set AcroApp = Nothing : Set AcroAVDoc = Nothing
Dani Vainstein
Accessing PDF's
Page 67 of 79
Chapter 16
Page 68
AcroExch.PDTextSelect.GetPage () Method
Gets the page number on which a text selection is located.
returnValue = Object.GetPage()
The text selections page number. The first page in a PDDoc is page 0.
AVDoc.ClearSelection() AVDoc.SetTextSelection() AVDoc.ShowTextSelect() AVPageView.GetPage() AVPageView.GetPageNum() PDDoc.CreateTextSelect() Dani Vainstein Accessing PDF's Page 68 of 79
Chapter 16
Page 69
AcroExch.PDTextSelect.GetText () Method
Gets the text from the specified element of a text selection.To obtain all text in a text selection, use PDTextSelect.GetNumText() to determine the number of elements in the text selection, then use this method in a loop to obtain each of the elements.
Parameter
nTextIndex
Description
The element of the text selection to get.
The text, or an empty string if nTextIndex is greater than the number of elements in the text selection.
AVDoc.ClearSelection() PDPage.CreatePageHilite() PDDoc.CreateTextSelect() PDPage.CreateWordHilite() PDTextSelect.Destroy() PDTextSelect.GetBoundingRect() PDTextSelect.GetNumText() PDTextSelect.GetPage() AVDoc.SetTextSelection() AVDoc.ShowTextSelect()
Dani Vainstein
Accessing PDF's
Page 69 of 79
Chapter 16
Page 70
CreateObject( "AcroExch.App" ) This causes the Acrobat Forms plug-in to run, at which time it registers its class object with OLE. Then its main exposed object can be instantiated, that is: CreateObject( "AFormAut.App" ) Presently, registration in the Windows registry (which is different from the class object registration described above) happens every time Acrobat loads the plug-in. Therefore, you have to run Acrobat at least once with the AForm32.api file in the plug-ins folder before its type library can be found for object browsing from within the Visual Basic environment. This is also necessary in order to allow early binding. Dim the program variables as the corresponding classes in AFORMAUTLib, and not simply As Object. The object model was designed in accordance with the applicable standards and guidelines for document-centric applications from the OLE Programmer's Reference. That manual uses the term document to describe whatever an application uses as a file or an individual entity of data (in our case a field).
AFormAut.App Object
AFormApp is the only object the controller can externally instantiate (that is, using CreateObject). All other objects must be created by navigating down the hierarchy with the methods and properties described in this document.
AFormAut.Field Object
A field in the document that is currently active in Acrobat.
AFormAut.Fields Object
A collection of all the fields in the document that are currently active in Acrobat at the time Fields is instantiated. The Fields collection includes both terminal and non-terminal fields. A terminal field is one that either does not have children, or if it does, they are simply multiple appearances (that is, child annotations) of the field in question. If you instantiate a Fields object, and subsequently fields are manually added or removed using the Forms tool in Acrobat, the Fields object will no longer be in sync with the document. You must re-instantiate the Fields object.
Chapter 16
Page 71
if there is a sample that gets you started in the right direction. See the Acrobat SDK Main Page at http://partners.adobe.com/asn/acrobat/index.jsp to access the Acrobat SDK. The Web site uses lock icons next to individual portions of the SDK to indicate that ASN membership or a subscription is required for access.
What Are the API Differences Between Acrobat and Adobe Reader?
Acrobat provides a full-featured development environment that includes the entire Acrobat core API. There are some small differences between the public APIs available in Acrobat Professional and Acrobat Standard. These are documented in the Acrobat SDK Plug-in Guide and the Acrobat and PDF Library Reference. The APIs that may be used for Adobe Reader are limited technically and legally. Technical limitations are documented in the Acrobat and PDF Library API Overview and the Acrobat Interapplication Communication Overview. Both Acrobat and Adobe Reader accept plug-ins. The primary difference between the two is that Adobe Reader can neither make changes to a file nor save a file. API methods that change a file in such a way that a save would be required are not available in Adobe Reader.
Dani Vainstein
Accessing PDF's
Page 71 of 79
Chapter 16
Page 72
How Can I Extract Text From PDF Documents Using the Acrobat SDK?
You can extract text with the Acrobat SDK in two ways: Use the Acrobat core API Use Acrobats automation API
How Do I Use Command Lines with Acrobat and Adobe Reader on Windows?
These are unsupported command lines, but have worked for some developers. There is no documentation for these commands other than what is listed below. You can display and print a PDF file with Acrobat and Adobe Reader from the command line.
AcroRd32.exe pathname Executes Adobe Reader and displays the file, whose full path
must be provided. Other options for the command line are:
Option
/n /s /o /h /p pathname
Description
Launches a separate instance of Acrobat or Adobe Reader, even if one is currently open. Opens Acrobat or Adobe Reader, suppressing the splash screen. Opens Acrobat or Adobe Reader, suppressing the open file dialog. Opens Acrobat or Adobe Reader in a minimized window. Executes Adobe Reader and displays the Print dialog box Initiates Adobe Reader and prints a file, whose path must be fully specified, while suppressing the Print dialog box. Where
printername The name of your printer. drivername Your printer drivers name, as it appears in your printers properties. portname The printers port. portname cannot contain any "/" characters; if it does, output is routed to the default port for that printer.
PDF Tasks
Find Text in all PDF's File Open
This code is assuming you only have at least one AVDoc open. Also, if no occurences of the queried text are found, a dialog box kicks up in the browser window.
Option Explicit Dim bFound, i Dim AcroApp, AcroAVDoc Set AcroApp = CreateObject( "AcroExch.App" ) Dim bCaseSensitive, bWholeWordsOnly, bReset
Dani Vainstein
Accessing PDF's
Page 72 of 79
Chapter 16
Page 73
bCaseSensitive = True bWholeWordsOnly = False bReset = False For i = 0 To AcroApp.GetNumAVDocs - 1 Set AcroAVDoc = AcroApp.GetAVDoc( i ) If AcroAVDoc.IsValid Then bFound = AcroAVDoc.FindText( "Regular Expression Syntax", _ bCaseSensitive, bWholeWordsOnly, bReset ) Print "PDF Title ---> " & AcroAVDoc.GetTitle() Print "'Regular Expression Syntax' exists? ---> " & bFound End If Next Set AcroAVDoc = Nothing : Set AcroApp = Nothing
Option Explicit Dim bFound, i Dim AcroApp, AcroAVDoc Set AcroApp = CreateObject( "AcroExch.App" ) Dim bCaseSensitive, bWholeWordsOnly, bReset bCaseSensitive = True bWholeWordsOnly = False bReset = False For i = 0 To AcroApp.GetNumAVDocs - 1 Set AcroAVDoc = AcroApp.GetAVDoc( i ) If AcroAVDoc.IsValid Then bFound = AcroAVDoc.FindText( "Regular Expression Syntax", _ bCaseSensitive, bWholeWordsOnly, bReset ) Print "PDF Title ---> " & AcroAVDoc.GetTitle() Print "'Regular Expression Syntax' exists? ---> " & bFound End If
Dani Vainstein
Accessing PDF's
Page 73 of 79
Chapter 16
Page 74
Option Explicit Dim app, pdDoc, avDoc, oDialog Dim fname, gPDFPath, numOpenPDFs, bExisting Dim InputText, dateTimeStart, dateTimeEnd, timeSpan Private Function FindWordJSO( ByVal InputText ) Dim bStop Dim jso, nCount, i, j Dim word, result, foundErr, nPages, nWords Dim rc, str_Renamed ' ** get JavaScript Object ' ** note jso is related to PDDoc of a PDF, Set jso = pdDoc.GetJSObject nCount = 0 bStop = False ' ** search for the text If Not jso Is Nothing Then Print "Searching ... " ' ** total number of pages nPages = jso.numPages ' ** Go through pages For i = 0 To nPages 1 ' ** check each word in a page nWords = jso.getPageNumWords( i ) For j = 0 To nWords 1 ' ** get a word word = jso.getPageNthWord( i, j ) If VarType( word ) = vbString Then ' ** compare the word with what the user wants result = StrComp( word, InputText, vbTextCompare )
Dani Vainstein
Accessing PDF's
Page 74 of 79
Chapter 16
Page 75
' ** if same If result = 0 Then nCount = nCount + 1 rc = jso.selectPageNthWord( i, j ) Print "# " & nCount & " found in page " & ( i + 1 ) Print "Searching ... " End If End If Next Next End If FindWordJSO = nCount Set jso = Nothing End Function ' ** Initialize Acrobat by creating App object ' ** If Acrobat is running, it will get the existing acrobat object. Set app = CreateObject( "AcroExch.App" ) ' ** show Acrobat app.Show() ' ** is a PDF already open? numOpenPDFs = app.GetNumAVDocs() ' ** if there is a PDF opened, get doc object If numOpenPDFs > 0 Then bExisting = True Set avDoc = app.GetActiveDoc() Set pdDoc = avDoc.GetPDDoc() Print "Currently open file ---> " & avDoc.GetTitle() Else bExisting = False End If ' ** if no pdf open, then open a new one... If Not bExisting Then Set oDialog = CreateObject( "UserAccounts.CommonDialog" ) oDialog.Filter = "Pdf Files|*.pdf" oDialog.FilterIndex = 1 oDialog.InitialDir = Environment( "ProductDir" ) If oDialog.ShowOpen = 0 Then ExitTest( "Error" ) Else gPDFPath = oDialog.FileName End If Set pdDoc = CreateObject( "AcroExch.PDDoc" ) ' ** open the PDF in acrobat If pdDoc.Open( gPDFPath ) Then fname = pdDoc.GetFileName pdDoc.OpenAVDoc( fname ) Else MsgBox( "Failed to open " & gPDFPath ) ExitTest( "Error" ) End If End If InputText = InputBox( "Please input a word", "Accessing PDF", "" )
Dani Vainstein
Accessing PDF's
Page 75 of 79
Chapter 16
Page 76
If Len( InputText ) = 0 Then MsgBox( "Please input a word" ) ExitTest( 0 ) Else Print "Searching word '" & InputText & "'" Set dateTimeStart = DotNetFactory.CreateInstance( "System.DateTime" ).Now Call FindWordJSO( InputText ) Set dateTimeEnd = DotNetFactory.CreateInstance( "System.DateTime" ).Now Set timeSpan = dateTimeEnd.Subtract( dateTimeStart ) If nCount > 0 Then Print "Total found: " & nCount Print "Find time measure is ---> " & timeSpan.TotalSeconds & " seconds." Else Print "Not found in the document" End If End If ' ** End Acrobat only if it was not existing before ' ** or it is existing but no PDF file opened. If Not app Is Nothing Then If bExisting = False Then app.CloseAllDocs() app.Exit() End If End If ' ** Cleaning Set app = Nothing : Set pdDoc = Nothing :Set avDoc = Nothing
Dani Vainstein
Accessing PDF's
Page 76 of 79
Chapter 16
Page 77
Appendix 15
View Mode Enumeration
Constant
PDDontCare PDUseNone PDUseThumbs
Value
0 1 2
Description
Leave the view mode as it is. Display the document, but neither bookmarks nor thumbnail images. Display the document and thumbnail images.
Dani Vainstein
Accessing PDF's
Page 77 of 79
Chapter 16
Page 78
PDUseBookmarks PDFullScreen
3 4
Display the document and bookmarks. Display the document in full screen mode.
Description
Displays only the document, but neither bookmarks nor thumbnail images. Displays the document and bookmarks. UseThumbs Displays the document and thumbnail images. Separator (not visible in the toolbar). Allows the user to scroll within the current page. Increases the zoom factor. Decreases the zoom factor. (not available after Acrobat 2.1) Allows the user to select text. Allows the user to create, select, or edit notes Allows the user to create a link or manipulate an existing link. Separator (not visible in the toolbar). Goes to the documents first page. Goes to the previous page in the document. Goes to the next page in the document. Goes to the documents last page. Separator (not visible in the toolbar). Goes to the previous view in the view history Goes to the next view in the view history. Separator (not visible in the toolbar). Sets the zoom factor to 100% Sets the zoom factor to fit the entire page into the window. Sets the zoom factor to fit the portion of the page on which drawing appears into the window.
Value
0 1 2 3 4 5
Description
No variable zoom (i.e., zoom is a fixed value such as 100%). Use this for XYZ zoom. Fit page to window. Fit page width to window. Fit page height to window. Fit visible width to window.
Dani Vainstein
Accessing PDF's
Page 78 of 79
Chapter 16
Page 79
Zoom Type
pdRotate0 pdRotate90 pdRotate180 pdRotate270
Value
0 90 180 270
Description
No variable zoom (i.e., zoom is a fixed value such as 100%). Use this for XYZ zoom. Fit page to window. Fit page width to window.
Value
1 2 4
Description
Document has been modified and needs to be saved. Document cannot be saved incrementally; it must be written using PDSaveFull. Document has been modified slightly (such as bookmarks or text annotations have been opened or closed), but not in a way that warrants saving. Document is based on a temporary file that must be deleted when the document is closed or saved. Document was repaired when it was opened. Documents major version is newer than current. Documents minor version is newer than current. Documents version is older than current. Dont display errors.
8 16 32 64 128 256
Dani Vainstein
Accessing PDF's
Page 79 of 79