I am trying to get the Acrobat Active X control
working in SWT. I was wondering if anyone has done this? I have pasted the code
I have so far below. The shell window appears but there is no control visible. I
have tried both OleClientsite and OleControlSite.
---------------------------
t0md
public static void main(String[]
args) { Display display=new Display(); Shell shell=new
Shell(display); GridData data = ""
GridData(0); shell.setLayoutData(data); shell.setLayout(new
org.eclipse.swt.layout.FillLayout());
ViewForm pdfForm=new
ViewForm(shell,SWT.NONE); OleFrame PDFFrame=new
OleFrame(pdfForm,SWT.NONE);
// Border on right-hand side to make
separation more obvious pdfForm.setBorderVisible(true);
GridData gridData=new
GridData(GridData.FILL_HORIZONTAL|GridData.FILL_VERTICAL); gridData.horizontalSpan=10; PDFFrame.setLayoutData(gridData); PDFFrame.setSize(300,200);
try { // Create an Automation
object for access to extended capabilities // OleControlSite
PDFControlSite=new
OleControlSite(PDFFrame,SWT.NONE,"PDF.PdfCtrl.1"); try
{ OleClientSite PDFClientSite=new
OleClientSite(PDFFrame,SWT.NONE,"PDF.PdfCtrl.1");
// OleAutomation oleAutomation=new
OleAutomation(PDFControlSite); OleAutomation
oleAutomation=new OleAutomation(PDFClientSite);
// int result =
PDFControlSite.queryStatus(OLE.OLECMDID_PRINT); int result
= PDFClientSite.queryStatus(OLE.OLECMDID_PRINT); if
((result & OLE.OLECMDF_SUPPORTED) ==
OLE.OLECMDF_SUPPORTED) System.out.println("OLE.OLECMDID_PRINT
is
supported"); else System.out.println("OLE.OLECMDID_PRINT
is NOT supported"); if ((result & OLE.OLECMDF_ENABLED)
==
OLE.OLECMDF_ENABLED) System.out.println("OLE.OLECMDID_PRINT
is
enabled"); else System.out.println("OLE.OLECMDID_PRINT
is NOT enabled");
// result =
PDFControlSite.queryStatus(OLE.OLECMDID_OPEN); result =
PDFClientSite.queryStatus(OLE.OLECMDID_OPEN); if ((result
& OLE.OLECMDF_SUPPORTED) ==
OLE.OLECMDF_SUPPORTED) System.out.println("OLE.OLECMDID_OPEN
is
supported"); else System.out.println("OLE.OLECMDID_OPEN
is NOT supported"); if ((result & OLE.OLECMDF_ENABLED)
==
OLE.OLECMDF_ENABLED) System.out.println("OLE.OLECMDID_OPEN
is
enabled"); else System.out.println("OLE.OLECMDID_OPEN
is NOT enabled");
int[] rgdispid =
oleAutomation.getIDsOfNames(new String[]{"AboutBox"}); int
dispIdMember =
rgdispid[0]; System.out.println("dispIdMember
="+dispIdMember); oleAutomation.invoke(dispIdMember);
// Invoke the AddFile
method // Look up the IDs of the AddFile method and its
parameter rgdispid = oleAutomation.getIDsOfNames(new
String[]{"setShowToolbar"}); dispIdMember =
rgdispid[0]; System.out.println("dispIdMember
="+dispIdMember); Variant bShowToolbar = new
Variant((short)1); // set to true (0 = false) if
(oleAutomation.setProperty(dispIdMember, bShowToolbar) !=
true) System.out.println("Error:
setProperty(bShowToolbar)");
rgdispid =
oleAutomation.getIDsOfNames(new String[]{"LoadFile"});
dispIdMember =
rgdispid[0]; System.out.println("dispIdMember
="+dispIdMember); Variant fileName = new Variant("file:///C://test.pdf"); // set to true (0 =
false) if (oleAutomation.setProperty(dispIdMember,
fileName) != true) System.out.println("Error:
setProperty(fileName)");
// shell.pack(); shell.open();
pdfForm.setContent(PDFFrame);
// if
(PDFControlSite.doVerb(OLE.OLEIVERB_SHOW) != OLE.OK) // if
(PDFClientSite.doVerb(OLE.OLEIVERB_SHOW) != OLE.OK) if
(PDFClientSite.doVerb(OLE.OLEIVERB_UIACTIVATE) !=
OLE.OK) System.out.println("Error:
doVerb()");
while
(!shell.isDisposed()) { if
(!display.readAndDispatch()) { display.sleep(); } }
oleAutomation.dispose(); pdfForm.dispose(); PDFFrame.dispose(); // PDFControlSite.dispose(); PDFClientSite.dispose(); }
catch(SWTError err)
{ err.printStackTrace(); }
} catch(SWTException ex)
{ ex.printStackTrace(); // Creation may have
failed because control is not installed on machine
System.out.println("Error: Could Not Create PDF
Control");
} // activate the browser try {
} catch(Exception e)
{ e.printStackTrace(); } } }
|