0

我卡在我的应用程序中。我想通过 c# 中的 axacropdf 控件搜索文本(完全匹配)和位置并突出显示 pdf 中的文本。我怎样才能做到这一点。我用谷歌搜索了很多主题,但没有帮助。我怎样才能实现这个目标。你有任何代码或dll。请给我一些代码。

谢谢

4

1 回答 1

0

使用 Bytescout.PDFExtractor;

       try
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                FileName = openFileDialog1.FileName;

                string FName = FileName;
                int a = FileName.LastIndexOf('\\');
                txtFileName.Text = FileName.Substring(a + 1);

                axAcroPDF1.LoadFile(FileName);

                FileInfo fi = new FileInfo(FileName);
                string PDFFileName = fi.Name.ToString();
                double filesize = (fi.Length / 1024F / 1024F);
                string size = filesize.ToString("0.00 MB");
                string CreationDate = fi.CreationTime.ToString();
                string LastAccessDate = fi.LastAccessTime.ToString();
                string ModifiedDate = fi.LastWriteTime.ToString();

                lblVersion.Text = "File Name         : " + PDFFileName + "\nSize                  : " + size + "\nCreation Date   : " + CreationDate + "\nModified Date   : " + ModifiedDate;

                TextExtractor extractor = new TextExtractor();
                extractor.RegistrationName = "Demo";
                extractor.RegistrationKey = "Demo";
                extractor.LoadDocumentFromFile(FileName);

                int pageCount = extractor.GetPageCount();

                RectangleF location;

                for (int s = 0; s <= Keywords.Length - 1; s++)
                {



                    if (Keywords[s] != "")
                    {
                        TreeNode tNode = new TreeNode();

                        tNode = treeView1.Nodes.Add(Keywords[s]);


                        for (int i = 0; i < pageCount; i++)
                        {
                            if (extractor.Find(i, Keywords[s], false, out location))
                            {
                                do
                                {
                                    int j = i;
                                    tNode.Nodes.Add((j+1).ToString() + "     " + location.ToString());

                                    float X = location.X;
                                    float Y = location.Y;
                                    float Width = location.Width;  
                                    float Height = location.Height;




                                    float Left = location.Left;
                                    float Right = location.Right;
                                    float Top = location.Top;
                                    float Bottom = location.Bottom;


                                    //axAcroPDF1.setCurrentHighlight(Convert.ToInt32(X), Convert.ToInt32(Y), Convert.ToInt32(Width), Convert.ToInt32(Height));



                                }
                                while (extractor.FindNext(out location));
                            }
                        }
                    }
                    else
                    {

                    }
                }      
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString(), "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
于 2012-05-29T08:06:04.050 回答