static public int ChangeAttachmentsDescription(Form1 Parent) { if (Parent.m_CurDoc == null) { return(0); } if (Parent.AttachmentView.SelectedItems.Count == 0) { MessageBox.Show("Please select attachment from the Attachments list.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(0); } Form1.ListItemAttachment currentAnnot = Parent.AttachmentView.SelectedItems[0] as Form1.ListItemAttachment; if (currentAnnot.SubItems[currentAnnot.SubItems.Count - 1].Text == "Embedded File Item") { IPXC_NameTree attachments = Parent.m_CurDoc.GetNameTree("EmbeddedFiles"); IPXS_PDFVariant pdfVariant = attachments.Lookup(currentAnnot.SubItems[0].Text); IPXC_FileSpec fileSpec = Parent.m_CurDoc.GetFileSpecFromVariant(pdfVariant); fileSpec.Description = "Description"; Marshal.ReleaseComObject(attachments); return((int)Form1.eFormUpdateFlags.efuf_Attachments | (int)Form1.eFormUpdateFlags.efuf_Annotations); } IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Annotation annotFileAttach = pages[(uint)currentAnnot.m_nPageNumber].GetAnnot((uint)currentAnnot.m_nIndexOnPage); IPXC_AnnotData_FileAttachment fileAttachment = annotFileAttach.Data as IPXC_AnnotData_FileAttachment; IPXC_FileSpec annotAttachFileSpec = fileAttachment.FileAttachment; annotAttachFileSpec.Description = "Description"; return((int)Form1.eFormUpdateFlags.efuf_Attachments | (int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public void AddStandardStampByID(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page firstPage = pages[0]; PXC_Rect rcPB = firstPage.get_Box(PXC_BoxType.PBox_PageBox); IPXC_StampsManager stampManager = Parent.m_pxcInst.StampsManager; IPXC_StampInfo si = stampManager.FindStamp("Draft"); //Creating stamp annotation IPXS_Inst pSInt = (IPXS_Inst)Parent.m_pxcInst.GetExtension("PXS"); uint nStamp = pSInt.StrToAtom("Stamp"); double nHeight = 0; double nWidth = 0; si.GetSize(out nWidth, out nHeight); PXC_Rect rc; rc.left = rcPB.left - nWidth / 2.0 + nHeight / 2.0; rc.right = rcPB.left + nWidth / 2.0 + nHeight / 2.0; rc.top = rcPB.top; rc.bottom = rc.top - nWidth; IPXC_Annotation annot = firstPage.InsertNewAnnot(nStamp, ref rc, 0); IPXC_AnnotData_Stamp stampData = (IPXC_AnnotData_Stamp)annot.Data; stampData.Rotation = 90; stampData.SetStampName(si.ID); annot.Data = stampData; Marshal.ReleaseComObject(firstPage); Marshal.ReleaseComObject(pages); }
static public void AddCheckBoxFormFields(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 uncheked checkbox 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 = 3.2 * 72.0; rcPB.right = rcPB.left + 0.5 * 72.0; rcPB.top = rc.top - 0.2 * 72.0; rcPB.bottom = rcPB.top - 0.5 * 72.0; //top is greater then bottom (PDF Coordinate System) IPXC_FormField checkBoxUnch = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "CheckBox", ref index), PXC_FormFieldType.FFT_CheckBox, 0, ref rcPB); Marshal.ReleaseComObject(checkBoxUnch); //Adding cheked checkbox rcPB.right = rc.right - 3.2 * 72.0; rcPB.left = rcPB.right - 0.5 * 72.0; IPXC_FormField checkBoxCh = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "CheckBox", ref index), PXC_FormFieldType.FFT_CheckBox, 0, ref rcPB); IPXC_Annotation annot = checkBoxCh.Widget[0]; IPXC_AnnotData_Widget widget = (IPXC_AnnotData_Widget)annot.Data; checkBoxCh.CheckWidget((uint)checkBoxCh.GetWidgetIndex(annot), true); Marshal.ReleaseComObject(checkBoxCh); Marshal.ReleaseComObject(Page); Marshal.ReleaseComObject(pages); }
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 AddTextAnnotation(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 Text annotation atom for the InsertNewAnnot method uint nText = pxsInst.StrToAtom("Text"); 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_Text aData = annot.Data as IPXC_AnnotData_Text; aData.Contents = "Text Annotation 1."; aData.Title = "Text Annotation 1"; var color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 0.8f, 0.8f); aData.Color = color; aData.Opacity = 0.5f; annot.Data = aData; rcOut.bottom -= 100; rcOut.top -= 100; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Text; aData.Contents = "Text Annotation 2."; aData.Title = "Text Annotation 2"; color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.5f, 0.4f, 0.48f); aData.Color = color; annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int AddPopupAnnotation(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 Popup annotation atom for the InsertNewAnnot method uint nSquare = pxsInst.StrToAtom("Square"); 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 + 200; rcOut.right = nCX + 200; rcOut.top = nCY + 300; IPXC_Annotation sqAnnot = page.InsertNewAnnot(nSquare, ref rcOut); IPXC_AnnotData_SquareCircle aSData = sqAnnot.Data as IPXC_AnnotData_SquareCircle; var color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 0.8f, 0.8f); aSData.Color = color; aSData.Title = "Square annotation 1."; aSData.Contents = "Popup Annotation 1."; sqAnnot.Data = aSData; //Getting Text annotation atom for the InsertNewAnnot method uint nText = pxsInst.StrToAtom("Popup"); IPXC_Annotation annot = page.InsertNewAnnot(nText, ref rcOut); IPXC_AnnotData_Popup aData = annot.Data as IPXC_AnnotData_Popup; aData.Opened = true; annot.Data = aData; sqAnnot.SetPopup(annot); Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int DrawSquareAnnotation(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page page = pages[0]; PXC_Rect rcPage = page.get_Box(PXC_BoxType.PBox_PageBox); IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS"); IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX"); //Getting Square annotation atom for the InsertNewAnnot method uint nSquare = pxsInst.StrToAtom("Square"); //Placing it in the center of page 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 - 100; rcOut.right = nCX + 200; rcOut.top = nCY + 100; IPXC_Annotation annot = page.InsertNewAnnot(nSquare, ref rcOut); IPXC_AnnotData_SquareCircle aData = annot.Data as IPXC_AnnotData_SquareCircle; aData.Opacity = 0.7; var color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 1.0f, 1.0f); 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); annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int AddAttachmentAsAnnotation(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 File attachment annotation atom for the InsertNewAnnot method uint nText = pxsInst.StrToAtom("FileAttachment"); 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 = page.InsertNewAnnot(nText, ref rcOut); IPXC_AnnotData_FileAttachment aData = annot.Data as IPXC_AnnotData_FileAttachment; aData.Contents = "FileAttachment Annotation 1."; string sFilePath = System.Environment.CurrentDirectory + "\\Documents\\Hobbit.txt"; IPXC_FileSpec fileSpec = Parent.m_CurDoc.CreateEmbeddFile(sFilePath); IPXC_EmbeddedFileStream EFS = fileSpec.EmbeddedFile; EFS.UpdateFromFile2(sFilePath); aData.FileAttachment = fileSpec; annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations | (int)Form1.eFormUpdateFlags.efuf_Attachments); }
static public void LoadStampFromTheImageFile(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } //Loading image file IAFS_Inst afsInst = (IAFS_Inst)Parent.m_pxcInst.GetExtension("AFS"); string sPath = System.Environment.CurrentDirectory + "\\Images\\run_24.png"; IAFS_Name name = afsInst.DefaultFileSys.StringToName(sPath); int openFileFlags = (int)(AFS_OpenFileFlags.AFS_OpenFile_Read | AFS_OpenFileFlags.AFS_OpenFile_ShareRead); IAFS_File destFile = afsInst.DefaultFileSys.OpenFile(name, openFileFlags); //Creating new collection IPXC_StampsCollection sc = Parent.m_pxcInst.StampsManager.CreateEmptyCollection("My Stamps"); IPXC_StampInfo si = sc.AddStamp(destFile, "My Stamp"); IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page firstPage = pages[0]; PXC_Rect rcPB = firstPage.get_Box(PXC_BoxType.PBox_PageBox); //Creating stamp annotation IPXS_Inst pSInt = (IPXS_Inst)Parent.m_pxcInst.GetExtension("PXS"); uint nStamp = pSInt.StrToAtom("Stamp"); double nHeight = 0; double nWidth = 0; si.GetSize(out nWidth, out nHeight); //Increasing width and height by 20 PXC_Rect rc; //Annotation rectangle rc.left = 0; rc.right = nWidth * 20; rc.top = rcPB.top; rc.bottom = rc.top - nHeight * 20; IPXC_Annotation annot = firstPage.InsertNewAnnot(nStamp, ref rc, 0); IPXC_AnnotData_Stamp stampData = (IPXC_AnnotData_Stamp)annot.Data; stampData.set_BBox(rc); //Stamp rectangle boundaries stampData.SetStampName(si.ID); annot.Data = stampData; Marshal.ReleaseComObject(firstPage); Marshal.ReleaseComObject(pages); }
static public void AddStandardStampByIndexInCollection(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page firstPage = pages[0]; PXC_Rect rcPB = firstPage.get_Box(PXC_BoxType.PBox_PageBox); IPXC_StampsManager stampManager = Parent.m_pxcInst.StampsManager; uint nColIndex = (uint)stampManager.FindCollection("Standard"); IPXC_StampsCollection sc = stampManager[nColIndex]; IPXC_StampInfo si = null; for (uint i = 0; i < sc.Count; i++) { if (sc[i].ID == "Expired") { si = sc[i]; break; } } //Creating stamp annotation IPXS_Inst pSInt = (IPXS_Inst)Parent.m_pxcInst.GetExtension("PXS"); uint nStamp = pSInt.StrToAtom("Stamp"); double nHeight = 0; double nWidth = 0; si.GetSize(out nWidth, out nHeight); PXC_Rect rc; rc.left = 0; rc.right = nWidth; rc.top = rcPB.top; rc.bottom = rc.top - nHeight; IPXC_Annotation annot = firstPage.InsertNewAnnot(nStamp, ref rc, 0); IPXC_AnnotData_Stamp stampData = (IPXC_AnnotData_Stamp)annot.Data; stampData.SetStampName(si.ID); annot.Data = stampData; Marshal.ReleaseComObject(firstPage); Marshal.ReleaseComObject(pages); }
static public void LoadStampsCollectionFromFile(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } //Loading stamp collection from stamp file IAFS_Inst afsInst = (IAFS_Inst)Parent.m_pxcInst.GetExtension("AFS"); string sPath = System.Environment.CurrentDirectory + "\\Documents\\MyStamps.pdf"; IAFS_Name name = afsInst.DefaultFileSys.StringToName(sPath); int openFileFlags = (int)(AFS_OpenFileFlags.AFS_OpenFile_Read | AFS_OpenFileFlags.AFS_OpenFile_ShareRead); IAFS_File destFile = afsInst.DefaultFileSys.OpenFile(name, openFileFlags); IPXC_StampsCollection sc = Parent.m_pxcInst.StampsManager.LoadCollection(destFile); //Placing stamp from the loaded collection IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page firstPage = pages[0]; PXC_Rect rcPB = firstPage.get_Box(PXC_BoxType.PBox_PageBox); IPXC_StampInfo si = sc[0]; //getting stamp by index - they are sorted by name //Creating stamp annotation IPXS_Inst pSInt = (IPXS_Inst)Parent.m_pxcInst.GetExtension("PXS"); uint nStamp = pSInt.StrToAtom("Stamp"); double nHeight = 0; double nWidth = 0; si.GetSize(out nWidth, out nHeight); PXC_Rect rc; //Annotation rectangle rc.left = 0; rc.right = nWidth; rc.top = rcPB.top; rc.bottom = rc.top - nHeight; IPXC_Annotation annot = firstPage.InsertNewAnnot(nStamp, ref rc, 0); IPXC_AnnotData_Stamp stampData = (IPXC_AnnotData_Stamp)annot.Data; stampData.set_BBox(rc); //Stamp rectangle boundaries stampData.SetStampName(si.ID); annot.Data = stampData; Marshal.ReleaseComObject(firstPage); Marshal.ReleaseComObject(pages); }
static public int FlattenAnnotations(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page page = pages[Parent.CurrentPage]; //Filling the list of the annotations that need to be flattened IPXC_AnnotsList al = Parent.m_pxcInst.CreateAnnotsList(); for (uint i = 0; i < page.GetAnnotsCount(); i++) { IPXC_Annotation annot = page.GetAnnot(i); al.Insert(annot, uint.MaxValue); } Parent.m_CurDoc.FlattenAnnotations(Parent.CurrentPage, al); Marshal.ReleaseComObject(al); Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int RotateAnnotations(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.CreateNewDoc(Parent); } IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page page = pages[Parent.CurrentPage]; for (uint i = 0; i < page.GetAnnotsCount(); i++) { IPXC_Annotation annot = page.GetAnnot(i); PXC_Point rcRotPnt; //We are taking the center point of the annotation as the rotation point rcRotPnt.x = annot.get_Rect().left + (annot.get_Rect().right - annot.get_Rect().left) / 2.0f; rcRotPnt.y = annot.get_Rect().top - (annot.get_Rect().top - annot.get_Rect().bottom) / 2.0f; //We will be adding 45 degrees to the annotation rotation each time annot.Handler.RotateAnnot(annot, 45.0f, false, rcRotPnt); } Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int AddFreeTextAnnotation(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 Free text annotation atom for the InsertNewAnnot method uint nText = pxsInst.StrToAtom("FreeText"); 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 + 200; rcOut.right = nCX + 200; rcOut.top = nCY + 300; IPXC_Annotation annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); IPXC_AnnotData_FreeText aData = annot.Data as IPXC_AnnotData_FreeText; aData.Contents = "Free Text Annotation 1."; aData.Title = "Free Text Annotation 1."; IPXC_Font font = Parent.m_CurDoc.CreateNewFont("Arial", (uint)PXC_CreateFontFlags.CreateFont_Monospaced, 700); aData.DefaultFont = font; aData.DefaultFontSize = 40; var color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.7f, 0.7f, 0.7f); aData.DefaultTextColor = color; aData.Opacity = 0.5; aData.TextRotation = 90; aData.Subject = "Typewriter"; //Setting dashed border pattern var border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Beveled; border.nWidth = 4.0f; border.DashArray = new float[15]; border.DashArray[0] = border.DashArray[1] = 5.0f; //Width of dashes border.nDashCount = 2; //Number of dashes aData.set_Border(border); annot.Data = aData; rcOut.bottom -= 200; rcOut.top -= 200; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_FreeText; aData.Contents = "Free Text Annotation 2."; aData.DefaultFontSize = 15.0; color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 0.0f, 0.0f); aData.SColor = color; aData.DefaultTextColor = color; //Setting dashed border pattern border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Dashed; border.nWidth = 10.0f; border.DashArray = new float[20]; border.DashArray[0] = border.DashArray[1] = 5.0f; //Width of dashes border.nDashCount = 4; //Number of dashes aData.set_Border(border); annot.Data = aData; rcOut.bottom -= 200; rcOut.top -= 200; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_FreeText; aData.Contents = "Free Text Annotation 3."; color = auxInst.CreateColor(ColorType.ColorType_RGB); aData.DefaultFontSize = 15.0; color.SetRGB(1.0f, 1.0f, 1.0f); aData.SColor = color; color.SetRGB(0.0f, 0.0f, 0.0f); aData.DefaultTextColor = color; annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int AddRedactAnnotation(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"); IPXC_ContentCreator CC = Parent.m_CurDoc.CreateContentCreator(); double nCX = (rcPage.right - rcPage.left) / 2.0; double nCY = (rcPage.top - rcPage.bottom) / 4.0 * 3.0; IPXC_Font font = Parent.m_CurDoc.CreateNewFont("Arial", (uint)PXC_CreateFontFlags.CreateFont_Monospaced, 700); CC.SetFontSize(30); CC.SetFont(font); CC.SetColorRGB(0x00000000); for (int i = 0; i < 4; i++) { CC.ShowTextLine(nCX - 190, nCY - (40 * i), "This is a story of long ago.", -1, (uint)PXC_ShowTextLineFlags.STLF_Default | (uint)PXC_ShowTextLineFlags.STLF_AllowSubstitution); } page.PlaceContent(CC.Detach(), (uint)PXC_PlaceContentFlags.PlaceContent_Replace); IPXC_PageText Text = page.GetText(null, false); PXC_Rect rcOut = new PXC_Rect(); rcOut.left = nCX - 150; rcOut.bottom = nCY - 100; rcOut.right = nCX + 150; rcOut.top = nCY + 100; //Getting Redact annotation atom for the InsertNewAnnot method uint nText = pxsInst.StrToAtom("Redact"); IPXC_Annotation annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); IPXC_AnnotData_Redaction aData = annot.Data as IPXC_AnnotData_Redaction; aData.Title = "Redact annotation 1."; IPXC_QuadsF quadsF = Parent.m_pxcInst.CreateQuads(); uint afafaf = quadsF.Count; PXC_RectF rectF = new PXC_RectF(); Text.GetTextQuads3(8, 75, quadsF, out rectF); aData.Quads = quadsF; var color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 0.0f, 0.0f); aData.FColor = color; aData.SColor = color; annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
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 int AddPolygonAndPolylineAnnotation(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 Polygon and Polyline annotations atom for the InsertNewAnnot method string sPolygon = "Polygon"; string sPolyline = "PolyLine"; uint nText = pxsInst.StrToAtom(sPolygon); for (int p = 0; p < 2; p++) { 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 - 150; rcOut.bottom = nCY + 200; rcOut.right = nCX + 150; rcOut.top = nCY + 300; if (p > 0) { nText = pxsInst.StrToAtom(sPolyline); rcOut.bottom = nCY - 200; rcOut.top = nCY - 100; } IPXC_Annotation annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); IPXC_AnnotData_Poly aData = annot.Data as IPXC_AnnotData_Poly; aData.Title = (p == 0) ? sPolygon : sPolyline; aData.Title += " annotation 1."; IPXC_PolygonSrcF poly = aData.Vertices; double r = 1.5 * 72.0; double a = -90.0; poly.Clear(); for (int i = 0; i < 4 + p; i++) { PXC_PointF pointF = new PXC_PointF(); pointF.x = (float)(rcOut.left + r * Math.Cos(a * Math.PI / 180.0)); pointF.y = (float)(rcOut.bottom - r * Math.Sin(a * Math.PI / 180.0)); a += 360.0 / 4; poly.Insert(ref pointF, 1, uint.MaxValue); } aData.Vertices = poly; IColor color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.5f, 0.2f, 0.2f); aData.FColor = color; color.SetRGB(0.0f, 0.0f, 0.0f); aData.SColor = color; annot.Data = aData; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Poly; aData.Title = (p == 0) ? sPolygon : sPolyline; aData.Title += " annotation 2."; poly = aData.Vertices; poly.Clear(); for (int i = 0; i < 6 + p; i++) { PXC_PointF pointF = new PXC_PointF(); pointF.x = (float)(nCX + r * Math.Cos(a * Math.PI / 180.0)); pointF.y = (float)(rcOut.bottom - r * Math.Sin(a * Math.PI / 180.0)); a += 360.0 / 6; poly.Insert(ref pointF, 1, uint.MaxValue); } aData.Vertices = poly; color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.2f, 0.5f, 0.2f); aData.FColor = color; color.SetRGB(0.0f, 0.0f, 0.0f); aData.SColor = color; PXC_AnnotBorder border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Solid; border.nWidth = 5.0f; aData.set_Border(border); aData.BlendMode = PXC_BlendMode.BlendMode_Multiply; annot.Data = aData; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Poly; aData.Title = (p == 0) ? sPolygon : sPolyline; aData.Title += " annotation 3."; poly = aData.Vertices; poly.Clear(); for (int i = 0; i < 8 + p; i++) { PXC_PointF pointF = new PXC_PointF(); pointF.x = (float)(rcOut.right + r * Math.Cos(a * Math.PI / 180.0)); pointF.y = (float)(rcOut.bottom - r * Math.Sin(a * Math.PI / 180.0)); a += 360.0 / 8; poly.Insert(ref pointF, 1, uint.MaxValue); } aData.Vertices = poly; color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.2f, 0.2f, 0.5f); aData.FColor = color; color.SetRGB(0.0f, 0.0f, 0.0f); aData.SColor = color; border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Dashed; border.nWidth = 3.0f; border.DashArray = new float[] { 10f, 8f, 6f, 4f, 2f, 2f, 4f, 6f, 8f, 10f }; //Width of dashes border.nDashCount = 4; //Number of dashes aData.set_Border(border); aData.BlendMode = PXC_BlendMode.BlendMode_Multiply; annot.Data = aData; } Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int AddSquareAndCircleAnnotation(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 Square and Circle annotations atom for the InsertNewAnnot method uint nSquare = pxsInst.StrToAtom("Square"); uint nCircle = pxsInst.StrToAtom("Circle"); 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 + 200; rcOut.right = nCX + 200; rcOut.top = nCY + 300; IPXC_Annotation annot = unchecked (page.InsertNewAnnot(nSquare, ref rcOut)); IPXC_AnnotData_SquareCircle aData = annot.Data as IPXC_AnnotData_SquareCircle; aData.Title = "Square annotation 1."; annot.Data = aData; rcOut.bottom -= 150; rcOut.top -= 150; annot = unchecked (page.InsertNewAnnot(nSquare, ref rcOut)); aData = annot.Data as IPXC_AnnotData_SquareCircle; aData.Title = "Square annotation 2."; IColor color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 0.0f, 0.0f); aData.SColor = color; color.SetRGB(0.15f, 0.5f, 0.12f); aData.FColor = color; annot.Data = aData; rcOut.bottom -= 150; rcOut.top -= 150; annot = unchecked (page.InsertNewAnnot(nCircle, ref rcOut)); aData = annot.Data as IPXC_AnnotData_SquareCircle; aData.Title = "Circle annotation 3."; color.SetRGB(0.0f, 0.0f, 0.0f); aData.SColor = color; color.SetRGB(0.5f, 0.5f, 0.5f); aData.FColor = color; //Setting dashed border pattern PXC_AnnotBorder border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Dashed; border.nWidth = 4.0f; border.DashArray = new float[] { 10f, 8f, 6f, 4f, 2f, 2f, 4f, 6f, 8f, 10f }; //Width of dashes border.nDashCount = 4; //Number of dashes aData.set_Border(border); annot.Data = aData; rcOut.bottom -= 150; rcOut.top -= 150; annot = unchecked (page.InsertNewAnnot(nCircle, ref rcOut)); aData = annot.Data as IPXC_AnnotData_SquareCircle; aData.Title = "Circle annotation 4."; color.SetRGB(0.0f, 0.0f, 0.0f); aData.SColor = color; color.SetRGB(0.5f, 0.5f, 0.5f); aData.FColor = color; //Setting dashed border pattern border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Solid; border.nWidth = 5.0f; aData.set_Border(border); annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
static public int AddLineAnnotation(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 Line annotation atom for the InsertNewAnnot method uint nText = pxsInst.StrToAtom("Line"); 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 + 200; rcOut.right = nCX + 200; rcOut.top = nCY + 300; PXC_Point startPoint = new PXC_Point(); startPoint.x = rcPage.left + 50; startPoint.y = rcPage.top - 50; PXC_Point endPiont = new PXC_Point(); endPiont.x = rcPage.right - 50; endPiont.y = startPoint.y; IPXC_Annotation annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); IPXC_AnnotData_Line aData = annot.Data as IPXC_AnnotData_Line; aData.Title = "Line annotation 1."; var color = auxInst.CreateColor(ColorType.ColorType_RGB); color.SetRGB(0.0f, 0.0f, 0.0f); aData.Color = color; aData.SetLinePoints(ref startPoint, ref endPiont); PXC_AnnotBorder border = new PXC_AnnotBorder(); border.nStyle = PXC_AnnotBorderStyle.ABS_Solid; border.nWidth = 3.0f; aData.set_Border(border); annot.Data = aData; startPoint.y = startPoint.y - 50; endPiont.y = startPoint.y; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Line; aData.SetLinePoints(ref startPoint, ref endPiont); aData.Title = "Line annotation 2."; aData.Color = color; aData.SetLineEndings(PXC_AnnotLineEndingStyle.LE_None, PXC_AnnotLineEndingStyle.LE_OpenArrow); aData.set_Border(border); annot.Data = aData; startPoint.y = startPoint.y - 50; endPiont.y = startPoint.y; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Line; aData.SetLinePoints(ref startPoint, ref endPiont); aData.Title = "Line annotation 3."; aData.Color = color; aData.FColor = color; aData.SetLineEndings(PXC_AnnotLineEndingStyle.LE_ClosedArrow, PXC_AnnotLineEndingStyle.LE_ClosedArrow); aData.set_Border(border); annot.Data = aData; startPoint.y = startPoint.y - 50; endPiont.y = startPoint.y; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Line; aData.SetLinePoints(ref startPoint, ref endPiont); aData.Title = "Line annotation 4."; aData.Color = color; aData.FColor = color; aData.SetLineEndings(PXC_AnnotLineEndingStyle.LE_Circle, PXC_AnnotLineEndingStyle.LE_None); aData.set_Border(border); annot.Data = aData; startPoint.y = startPoint.y - 50; endPiont.y = startPoint.y; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Line; aData.SetLinePoints(ref startPoint, ref endPiont); aData.Title = "Line annotation 5."; aData.ShowCaption = true; aData.CaptionInLine = true; PXC_Size size; size.cx = 0; size.cy = 10; aData.set_CaptionOffset(ref size); aData.Contents = "Line annotation 5."; aData.Color = color; annot.Data = aData; startPoint.y = startPoint.y - 50; endPiont.y = startPoint.y; annot = unchecked (page.InsertNewAnnot(nText, ref rcOut)); aData = annot.Data as IPXC_AnnotData_Line; aData.SetLinePoints(ref startPoint, ref endPiont); aData.Title = "Line annotation 6."; aData.Color = color; aData.FColor = color; aData.LeaderLine = 15.0; aData.LeaderLineExtension = 15.0; aData.set_Border(border); annot.Data = aData; Marshal.ReleaseComObject(page); Marshal.ReleaseComObject(pages); return((int)Form1.eFormUpdateFlags.efuf_Annotations); }
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); }
static public void AddImageFormFields(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 as Image 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 + 1.0 * 72.0; rcPB.top = rc.top - 1.5 * 72.0; rcPB.bottom = rcPB.top - 2.0 * 72.0; //top is greater then bottom (PDF Coordinate System) IPXC_FormField Image = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Image", ref index), PXC_FormFieldType.FFT_PushButton, 0, ref rcPB); //Now we'll need to add the icon IPXC_Annotation annot = Image.Widget[0]; IPXC_AnnotData_Widget WData = (IPXC_AnnotData_Widget)annot.Data; string sPath = System.Environment.CurrentDirectory + "\\Images\\Editor_welcome.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); annot.Data = WData; Marshal.ReleaseComObject(Image); Marshal.ReleaseComObject(Page); Marshal.ReleaseComObject(pages); }
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); }