07-29-2009 11:01 AM
When you drop an instance of an Adobe PDF Viewer into an ActiveX Container, you get a FP terminal that defaults to the "AcroPDFLib.IAcroAXDocShim" class. This appears to be "AxAcroPDFLib.AxAcroPDF" (refer to page 239) according to the Acrobat Interapplication Communication Reference. I would like to have access to all the different classes of Automation Methods (start at page 5 in that document) such as the AcroExch.App and AcroExch.AVPageView.
Now, if you take the terminal, change it into a constant, you can right click on it and go to "Select ActiveX Class" at which point all available classes are available. (see below, how I have changed from the IAcroAXDocShim class to the CAcroApp class)
In short: how can I access all of these methods on the original parent container that contains the document?
07-29-2009 12:21 PM
Here's a related question, and maybe has a more simple answer: I would like to programmatically determine what page in the document is currently being viewed in the container. How can I do so?
Best regards,
Jack
07-29-2009 01:37 PM
07-29-2009 01:51 PM
07-29-2009 02:32 PM - edited 07-29-2009 02:36 PM
The AxAcroPDFLib.AxAcroPDF is the ActiveX control that can be embedded into any ActiveX container, whether it's LabVIEW or something else. The other classes refer to accessing the Acrobat Reader app itself, in the same way as Excel is manipulated using ActiveX. In that respect, it's two different worlds.
So, are you trying to automate Acrobat, or use the browser control (AxAcroPDFLib.AxAcroPDF)?
EDIT: I just remembered and did a quick check to confirm: The other classes only apply to the retail version of Acrobat. They apparently do not apply to the Reader.
07-29-2009 03:40 PM - edited 07-29-2009 03:42 PM
Basically, it boils down to making a PDF viewer that is compatible with a touchscreen monitor. The native PDF controls are small, and do not conform to the UI standard implemented through the rest of the application.
New buttons would be created that allow for zooming in and out, fitting to page height/width, and a scrollbar.
To achieve such a goal, I need more methods than are available in the base ActiveX Reader control.
Below is a quick sketch that shows my goal: enlarged controls for an embedded PDF viewer. The items circled in RED would go away, replaced by LabVIEW controls that control the PDF viewer.
EDIT: Oops, Fit Width button and Zoom In are duplicated. One should be Fit Page and the other Zoom Out.
07-29-2009 03:53 PM
07-29-2009 05:05 PM
08-11-2009 12:59 AM
I am currently running Adobe Acrobat V7 here and would like to be able to use ActiveX or another method to create PDF files from within LabVIEW.
Is it possible?
I am a bit overwhelmed with the Active X classes I am being presented with!
08-11-2009 01:22 AM - edited 08-11-2009 01:24 AM
mechelecengr wrote:
Now, if you take the terminal, change it into a constant, you can right click on it and go to "Select ActiveX Class" at which point all available classes are available. (see below, how I have changed from the IAcroAXDocShim class to the CAcroApp class)
In short: how can I access all of these methods on the original parent container that contains the document?
I can't help you with Acrobat here but ActiveX consists really of two object types. One are ActiveX controls that have an UI and can be embedded in a container and the other are Active X Automation servers that can be instantiated as object but do not have any direct UI itself.
The ActiveX container in LabVIEW will only show you ActiveX objects of the first type. To employ the other type you have to use the Automation Open function instead. Automation Open will instantiate (create) the Automation server object based on information in the registry and then gives you a refnum you can work with.
When selecting an Active X control into a container the instantiation of the control is done automatically inside the control and that is why you do not have the need to execute an Automation Open for such objects.
If you need to get the full Acrobat to get all the functionality I wouldn't know, bu I have my doubts that you can do it with the Reader component alone. The ActiveX controlallows very little control of the visibility of its various components and the ActiveX Automation classes do not have an UI component you can embed in a container.
Rolf Kalbermatter