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 void ConvertToTXT(Form1 Parent) { if (Parent.m_CurDoc == null) { Document.OpenDocFromStringPath(Parent); } IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX"); IPXC_Pages pages = Parent.m_CurDoc.Pages; IPXC_Page Page = pages[Parent.CurrentPage]; IPXC_PageText Text = Page.GetText(null, false); string writePath = Path.GetTempFileName(); writePath = writePath.Replace(".tmp", ".txt"); StreamWriter stream = new StreamWriter(writePath); List <PXC_TextLineInfo> textsLineInfo = new List <PXC_TextLineInfo>(); for (int i = 0; i < Text.LinesCount; i++) { PXC_TextLineInfo pxcTLI = Text.LineInfo[(uint)i]; textsLineInfo.Add(pxcTLI); } textsLineInfo.Sort(delegate(PXC_TextLineInfo firstTLI, PXC_TextLineInfo secondTLI) { PXC_RectF rcFirst = firstTLI.rcBBox; PXC_RectF rcSecond = secondTLI.rcBBox; auxInst.MathHelper.Rect_TransformDF(ref firstTLI.Matrix, ref rcFirst); auxInst.MathHelper.Rect_TransformDF(ref secondTLI.Matrix, ref rcSecond); if (rcFirst.top < rcSecond.top) { return(1); } if (rcFirst.top > rcSecond.top) { return(-1); } if (rcFirst.left < rcSecond.left) { return(-1); } if (rcFirst.left > rcSecond.left) { return(1); } return(0); }); for (int i = 0; i < Text.LinesCount; i++) { stream.Write(Text.GetChars(textsLineInfo[i].nFirstCharIndex, textsLineInfo[i].nCharsCount)); if (i < Text.LinesCount - 1) { stream.Write((textsLineInfo[i].rcBBox.top == textsLineInfo[i + 1].rcBBox.top) ? " " : "\r\n"); } } stream.Close(); Process.Start(writePath); Marshal.ReleaseComObject(Page); Marshal.ReleaseComObject(pages); }