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);
        }
Ejemplo n.º 2
0
        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);
        }