static public int AddActionsGoToE(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewSibling(false); } IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS"); uint atomGoToE = pxsInst.StrToAtom("GoToE"); IPXC_NameTree attachments = Parent.m_CurDoc.GetNameTree("EmbeddedFiles"); IPXS_PDFVariant var = null; try { var = attachments.Lookup("FeatureChartEU.pdf"); } catch (Exception) { string sFilePath = System.Environment.CurrentDirectory + "\\Documents\\FeatureChartEU.pdf"; IPXC_FileSpec fileSpec = Parent.m_CurDoc.CreateEmbeddFile(sFilePath); IPXC_EmbeddedFileStream EFS = fileSpec.EmbeddedFile; EFS.UpdateFromFile2(sFilePath); var = fileSpec.PDFObject; } attachments.Add("FeatureChartEU.pdf", var); IPXC_Action_Goto actionGoToE = Parent.m_pxcInst.GetActionHandler(atomGoToE).CreateEmptyAction(atomGoToE, Parent.m_CurDoc) as IPXC_Action_Goto; IPXC_GoToETargetPath targetPath = actionGoToE.TargetPath; IPXC_GoToETargetItem targetItem = targetPath.InsertNew(); targetItem.FileName = "FeatureChartEU.pdf"; targetItem = targetPath.InsertNew(); targetItem.FileName = "MyStamps.pdf"; targetItem = targetPath.InsertNew(); targetItem.AnnotIndex = 0; targetItem.PageNumber = 0; IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = "GoToE Action"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; aList.Insert(0, actionGoToE); bookmark.Actions = aList; Marshal.ReleaseComObject(attachments); return((int)Form1.eFormUpdateFlags.efuf_Bookmarks | (int)Form1.eFormUpdateFlags.efuf_Attachments); }
static public int AddActionNamed(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewSibling(false); } IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS"); uint atomNamed = pxsInst.StrToAtom("Named"); IPXC_Action_Named actionNamed = Parent.m_pxcInst.GetActionHandler(atomNamed).CreateEmptyAction(atomNamed, Parent.m_CurDoc) as IPXC_Action_Named; actionNamed.CmdName = "NextPage"; IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = "Execute Command Action"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; aList.Insert(0, actionNamed); bookmark.Actions = aList; return((int)Form1.eFormUpdateFlags.efuf_Bookmarks); }
static public int AddActionsGoToR(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewSibling(false); } IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = "GoToR Action"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; PXC_Destination dest = new PXC_Destination(); dest.nPageNum = 2; dest.nNullFlags = 4 | 8; dest.nType = PXC_DestType.Dest_XYZ; double[] point = { 20, 30, 0, 0 }; dest.dValues = point; string sFilePath = System.Environment.CurrentDirectory + "\\Documents\\FeatureChartEU.pdf"; aList.AddGotoR(sFilePath, dest); bookmark.Actions = aList; return((int)Form1.eFormUpdateFlags.efuf_Bookmarks); }
static public int AddActionURI(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewSibling(false); } IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = "URI Action"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; string sFilePath = "https://www.tracker-software.com"; aList.AddURI(sFilePath); bookmark.Actions = aList; return((int)Form1.eFormUpdateFlags.efuf_Bookmarks); }
static public int AddActionJS(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewSibling(false); } IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = "Java Script Action"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; string sJS = "app.alert(\"Hello world!\", 3);"; aList.AddJavaScript(sJS); bookmark.Actions = aList; return((int)Form1.eFormUpdateFlags.efuf_Bookmarks); }
static public int AddActionsGoTo(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewSibling(false); } IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = "GoTo Action"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; PXC_Destination dest = new PXC_Destination(); dest.nPageNum = Parent.CurrentPage; dest.nNullFlags = 4 | 8; dest.nType = PXC_DestType.Dest_XYZ; double[] point = { 20, 30, 0, 0 }; dest.dValues = point; aList.AddGoto(dest); bookmark.Actions = aList; return((int)Form1.eFormUpdateFlags.efuf_Bookmarks); }
static public int AddActionLaunch(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewSibling(false); } IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = "Launch Action"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; string sFilePath = System.Environment.CurrentDirectory + "\\Documents\\FeatureChartEU.pdf"; aList.AddLaunch(sFilePath); bookmark.Actions = aList; return((int)Form1.eFormUpdateFlags.efuf_Bookmarks); }
static public void AddDateFormFields(Form1 Parent) { int index = 1; //delegate string CheckNamesFields(IPXC_Document Doc, string fieldName, ref int x); CheckNamesFields checkNamesFields = (IPXC_Document Doc, string fName, ref int inx) => { string sFieldName = ""; uint i = 0; do { sFieldName = fName + inx; IPXC_FormField ff = Doc.AcroForm.GetFieldByName(sFieldName); if (ff == null) { break; } inx++; i++; }while (i <= Doc.AcroForm.FieldsCount); inx++; return(sFieldName); }; if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } PXC_Rect rc = new PXC_Rect(); rc.top = 800; rc.right = 600; //Adding Date IPXC_UndoRedoData urD = null; IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page Page = pages.InsertPage(0, rc, out urD); PXC_Rect rcPB = new PXC_Rect(); rcPB.left = 2.5 * 72.0; rcPB.right = rc.right - 2.5 * 72.0; rcPB.top = rc.top - 1.5 * 72.0; rcPB.bottom = rcPB.top - 0.5 * 72.0; //top is greater then bottom (PDF Coordinate System) IPXC_FormField Date = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Date", ref index), PXC_FormFieldType.FFT_Text, 0, ref rcPB); IPXC_Annotation annot = Date.Widget[0]; IPXC_AnnotData_Widget widget = (IPXC_AnnotData_Widget)annot.Data; IPXC_ActionsList actionsList = Parent.m_CurDoc.CreateActionsList(); //Set script to ActionList actionsList.AddJavaScript("var now = new Date()\n" + "this.getField(\"Date1\").value = (now.getMonth() + 1) + \"/\" + now.getDate() + \"/\" + now.getFullYear(); "); Date.Actions[PXC_TriggerType.Trigger_Format] = actionsList; Marshal.ReleaseComObject(Date); Marshal.ReleaseComObject(Page); Marshal.ReleaseComObject(pages); }
static public int AddChildBookmark(Form1 Parent) { if (Parent.m_CurDoc == null) { return(0); } IPXC_Bookmark bookmark = null; if (Parent.SelectedBookmarkNode == null) { bookmark = Parent.m_CurDoc.BookmarkRoot.AddNewChild(true); } else { bookmark = Parent.SelectedBookmarkNode.m_Bookmark.AddNewChild((Parent.SelectedBookmarkNode.m_Bookmark.ChildrenCount > 0)); } IPXC_ActionsList aList = Parent.m_CurDoc.CreateActionsList(); bookmark.Title = (Parent.CurrentPage + 1) + " page"; bookmark.Style = PXC_BookmarkStyle.BookmarkFont_Normal; PXC_Destination dest = new PXC_Destination(); dest.nPageNum = Parent.CurrentPage; dest.nNullFlags = 0; dest.nType = PXC_DestType.Dest_FitR; IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page page = pages[Parent.CurrentPage]; PXC_Rect rc = page.get_Box(PXC_BoxType.PBox_BBox); double[] rect = { rc.left, rc.bottom, rc.right, rc.top }; dest.dValues = rect; aList.AddGoto(dest); bookmark.Actions = aList; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Bookmarks); }
static public int AddLinkAnnotation(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_UndoRedoData urData = null; IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page firstPage = pages[0]; PXC_Rect rcPage = firstPage.get_Box(PXC_BoxType.PBox_PageBox); Marshal.ReleaseComObject(firstPage); IPXC_Page page = pages.InsertPage(0, ref rcPage, out urData); IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS"); IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX"); //Getting Link annotation atom for the InsertNewAnnot method uint nText = pxsInst.StrToAtom("Link"); double nCX = (rcPage.right - rcPage.left) / 2.0; double nCY = (rcPage.top - rcPage.bottom) / 2.0; PXC_Rect rcOut = new PXC_Rect(); rcOut.left = nCX - 200; rcOut.bottom = nCY + 250; rcOut.right = nCX + 150; rcOut.top = nCY + 300; IPXC_Annotation annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); IPXC_AnnotData_Link aData = annot.Data as IPXC_AnnotData_Link; aData.Contents = "Link Annotation 1."; aData.HighlighMode = PXC_AnnotHighlightMode.AHM_Outline; var color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 0.8f, 0.8f); aData.Color = color; //Setting dashed border pattern var border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Dashed; border.nWidth = 4.0f; border.DashArray = new float[10]; border.DashArray[0] = border.DashArray[1] = 16.0f; //Width of dashes border.nDashCount = 2; //Number of dashes aData.set_Border(border); //Setting the annotation's URI action IPXC_ActionsList AL = Parent.m_CurDoc.CreateActionsList(); AL.AddURI("https://www.google.com"); annot.set_Actions(PXC_TriggerType.Trigger_Up, AL); annot.Data = aData; rcOut.bottom -= 200; rcOut.top -= 200; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Link; aData.Contents = "Link Annotation 2."; color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.5f, 0.4f, 0.48f); aData.Color = color; //Setting the annotation's Goto action PXC_Destination dest = new PXC_Destination(); dest.nPageNum = page.Number + 1; dest.nType = PXC_DestType.Dest_XYZ; dest.nNullFlags = 15; AL = Parent.m_CurDoc.CreateActionsList(); AL.AddGoto(dest); annot.set_Actions(PXC_TriggerType.Trigger_Up, AL); annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public void AddTextFieldsOnPage(Form1 Parent) { int index = 1; //delegate string CheckNamesFields(IPXC_Document Doc, string fieldName, ref int x); CheckNamesFields checkNamesFields = (IPXC_Document Doc, string fName, ref int inx) => { string sFieldName = ""; uint i = 0; do { sFieldName = fName + inx; IPXC_FormField ff = Doc.AcroForm.GetFieldByName(sFieldName); if (ff == null) { break; } inx++; i++; }while (i <= Doc.AcroForm.FieldsCount); inx++; return(sFieldName); }; if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } PXC_Rect rc = new PXC_Rect(); rc.top = 800; rc.right = 600; IPXC_UndoRedoData urD = null; IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page firstPage = pages.InsertPage(0, rc, out urD); PXC_Rect textRC = new PXC_Rect(); textRC.top = rc.top - 1.0 * 72.0; textRC.left = 1.0 * 72.0; textRC.bottom = rc.top - 2.0 * 72.0; textRC.right = rc.right - 1.0 * 72.0; //Ordinary text field IPXC_FormField firstTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC); firstTextBOX.SetValueText("Ordinary text field"); Marshal.ReleaseComObject(firstTextBOX); //Read-only and locked text field with custom style textRC.top = rc.top - 3.0 * 72.0; textRC.bottom = rc.top - 4.0 * 72.0; IPXC_FormField secondTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC); secondTextBOX.SetValueText("Read-only and locked text field with custom style"); IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX"); IPXC_Annotation annot = secondTextBOX.Widget[0]; IPXC_AnnotData_Widget WData = (IPXC_AnnotData_Widget)annot.Data; IColor color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.9f, 0.9f, 0.6f); WData.FColor = color; color.SetRGB(0.6f, 0.9f, 0.9f); WData.SColor = color; PXC_AnnotBorder border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Dashed; border.DashArray = new float[10]; border.DashArray[0] = border.DashArray[1] = 16.0f; //Width of dashes border.nDashCount = 2; //Number of dashes border.nWidth = 5.0f; WData.set_Border(ref border); annot.Data = WData; secondTextBOX.SetFlags((uint)PXC_FormFieldFlag.FFF_ReadOnly, (uint)PXC_FormFieldFlag.FFF_ReadOnly); Marshal.ReleaseComObject(secondTextBOX); //90 degree orientation text field with multiline option enabled textRC.top = rc.top - 5.0 * 72.0; textRC.bottom = rc.top - 7.0 * 72.0; IPXC_FormField thirdTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC); thirdTextBOX.SetFlags((uint)PXC_FormFieldFlag.TFF_MultiLine, (uint)PXC_FormFieldFlag.TFF_MultiLine); thirdTextBOX.SetValueText("90 degree orientation text field with multiline option enabled"); annot = thirdTextBOX.Widget[0]; WData = (IPXC_AnnotData_Widget)annot.Data; WData.ContentRotation = 90; annot.Data = WData; Marshal.ReleaseComObject(thirdTextBOX); //Time formatted text field with custom JS that gives current time textRC.top = rc.top - 8.0 * 72.0; textRC.bottom = rc.top - 9.0 * 72.0; IPXC_FormField fourthTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC); annot = fourthTextBOX.Widget[0]; annot.Flags |= (uint)PXC_SignDocumentFlags.Sign_TX_Date; IPXC_ActionsList actionsList = Parent.m_CurDoc.CreateActionsList(); //Set script to ActionList actionsList.AddJavaScript("var now = new Date()\n" + "this.getField(\"Text4\").value = now.getHours() + \":\" + now.getMinutes() "); fourthTextBOX.Actions[PXC_TriggerType.Trigger_Format] = actionsList; Marshal.ReleaseComObject(fourthTextBOX); Marshal.ReleaseComObject(firstPage); Marshal.ReleaseComObject(pages); }
static public void AddButtonWithIconAndURI(Form1 Parent) { int index = 1; //delegate string CheckNamesFields(IPXC_Document Doc, string fieldName, ref int x); CheckNamesFields checkNamesFields = (IPXC_Document Doc, string fName, ref int inx) => { string sFieldName = ""; uint i = 0; do { sFieldName = fName + inx; IPXC_FormField ff = Doc.AcroForm.GetFieldByName(sFieldName); if (ff == null) { break; } inx++; i++; }while (i <= Doc.AcroForm.FieldsCount); inx++; return(sFieldName); }; if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } PXC_Rect rc = new PXC_Rect(); rc.top = 800; rc.right = 600; //Adding button with icon with the URI action IPXC_UndoRedoData urD = null; IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page Page = pages.InsertPage(0, rc, out urD); PXC_Rect rcPB = new PXC_Rect(); rcPB.left = 1.5 * 72.0; rcPB.right = rcPB.left + 0.5 * 72.0; rcPB.top = rc.top - 0.14 * 72.0; rcPB.bottom = rcPB.top - 0.5 * 72.0; //top is greater then bottom (PDF Coordinate System) IPXC_FormField googleButton = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Button", ref index), PXC_FormFieldType.FFT_PushButton, 0, ref rcPB); //Now we'll need to add the icon IPXC_Annotation annot = googleButton.Widget[0]; IPXC_AnnotData_Widget WData = (IPXC_AnnotData_Widget)annot.Data; string sPath = System.Environment.CurrentDirectory + "\\Images\\gotoSource_24.png"; IPXC_Image img = Parent.m_CurDoc.AddImageFromFile(sPath); float imgw = img.Width; float imgh = img.Height; IPXC_ContentCreator CC = Parent.m_CurDoc.CreateContentCreator(); CC.SaveState(); CC.ScaleCS(imgw, imgh); //the image will be scaled to the button's size CC.PlaceImage(img); CC.RestoreState(); IPXC_Content content = CC.Detach(); PXC_Rect rcBBox; rcBBox.left = 0; rcBBox.top = imgh; rcBBox.right = imgw; rcBBox.bottom = 0; content.set_BBox(rcBBox); IPXC_XForm xForm = Parent.m_CurDoc.CreateNewXForm(ref rcPB); xForm.SetContent(content); WData.ButtonTextPosition = PXC_WidgetButtonTextPosition.WidgetText_IconOnly; WData.SetIcon(PXC_AnnotAppType.AAT_Normal, xForm, true); WData.Contents = "http://www.google.com"; //tooltip annot.Data = WData; //Setting the annotation's URI action IPXC_ActionsList AL = Parent.m_CurDoc.CreateActionsList(); AL.AddURI("https://www.google.com"); annot.set_Actions(PXC_TriggerType.Trigger_Up, AL); Marshal.ReleaseComObject(googleButton); //Adding button with icon and label and JS that goes to next page rcPB.left += 1.2 * 72.0; rcPB.right = rcPB.left + 0.6 * 72.0; IPXC_FormField nextButton = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Button", ref index), PXC_FormFieldType.FFT_PushButton, 0, ref rcPB); //Now we'll need to add the icon annot = nextButton.Widget[0]; WData = (IPXC_AnnotData_Widget)annot.Data; sPath = System.Environment.CurrentDirectory + "\\Images\\next_24.png"; img = Parent.m_CurDoc.AddImageFromFile(sPath); imgw = img.Width; imgh = img.Height; CC.SaveState(); CC.ScaleCS(imgw, imgh); //the image will be scaled to the button's size CC.PlaceImage(img); CC.RestoreState(); content = CC.Detach(); rcBBox.left = 0; rcBBox.top = imgh; rcBBox.right = imgw; rcBBox.bottom = 0; content.set_BBox(rcBBox); xForm = Parent.m_CurDoc.CreateNewXForm(ref rcPB); xForm.SetContent(content); WData.SetCaption(PXC_AnnotAppType.AAT_Normal, "Next Page"); WData.ButtonTextPosition = PXC_WidgetButtonTextPosition.WidgetText_IconTextV; PXC_Point p = new PXC_Point(); p.x = 0.5; p.y = 0.5; WData.set_IconOffset(p); WData.SetIcon(PXC_AnnotAppType.AAT_Normal, xForm, true); WData.Contents = "Next Page"; //tooltip annot.Data = WData; //Setting the annotation's Goto action PXC_Destination dest = new PXC_Destination(); dest.nPageNum = Page.Number + 1; dest.nType = PXC_DestType.Dest_XYZ; dest.nNullFlags = 15; AL = Parent.m_CurDoc.CreateActionsList(); AL.AddGoto(dest); annot.set_Actions(PXC_TriggerType.Trigger_Up, AL); Marshal.ReleaseComObject(nextButton); //Adding text button that opens the file rcPB.left += 1.5 * 72.0; rcPB.right = rcPB.left + 2.0 * 72.0; IPXC_FormField openButton = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Button", ref index), PXC_FormFieldType.FFT_PushButton, 0, ref rcPB); //Now we'll need to add the icon annot = openButton.Widget[0]; WData = (IPXC_AnnotData_Widget)annot.Data; WData.ButtonTextPosition = PXC_WidgetButtonTextPosition.WidgetText_TextOnly; WData.SetCaption(PXC_AnnotAppType.AAT_Normal, "Open File"); WData.Contents = "Open File"; //tooltip annot.Data = WData; //Setting the annotation's Launch action AL = Parent.m_CurDoc.CreateActionsList(); sPath = System.Environment.CurrentDirectory + "\\Documents\\FeatureChartEU.pdf"; AL.AddLaunch(sPath); annot.set_Actions(PXC_TriggerType.Trigger_Up, AL); Marshal.ReleaseComObject(openButton); Marshal.ReleaseComObject(Page); Marshal.ReleaseComObject(pages); }