3

用户将在 webbrowser 控件(或任何其他查看器)中看到一个 pdf 并从中选择文本然后我想查找

1)选定文本的坐标。

2)所选文本的字体大小。

3)所选文本的字体颜色。

4)所选文本的页码。

这样我就可以使用此信息从具有相同主题的 pdf 中查找文本。

问题1: 是否可以在webbrowser控件中找到选择了哪个文本或坐标?使用pdf tron查看器必须有更好的方法吗?

我的方法是修复表单,这样用户就不会改变长度、宽度

a)我会找到一种将屏幕坐标转换为 pdf 矩形坐标的方法(#problem 2)

b)然后我从这些坐标中填充获取文本

c)然后我会找到该文本的颜色和其他属性

但我敢肯定,一定有一个简单的方法。我试图寻求帮助,但无法找到这样的帮助。请提供相关文档和帮助以找出开始任务的起点。

4

1 回答 1

1

使用 webbrowser 无法做到这一点,但可以使用 PDFViewCtrl 替代。

1)通过浏览PDFNET.dll在工具箱中添加控件

2)最好不要拖放控件,或者在initializeComponent()之后初始化pdfviewctrl;

3)添加这些行给用户选择选项

        pdfViewCtrl1.SetDoc(doc);
        pdfViewCtrl1.SetToolMode(pdftron.PDF.PDFViewCtrl.ToolMode.e_text_rect_select);

4)在开始按钮的单击事件后面添加此代码,以便用户告诉程序他/她已经选择了文本。

            int pagenumber = pdfViewCtrl1.GetCurrentPage();
            if (pdfViewCtrl1.HasSelectionOnPage(pagenumber))
            {
                pdftron.PDF.PDFViewCtrl.Selection selection = pdfViewCtrl1.GetSelection();
                string HTML = selection.GetAsHtml();
                HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
                document.LoadHtml(HTML);
                double[] coordinates = selection.GetQuads();
                Rect rect = new Rect(coordinates[6], coordinates[7], coordinates[2], coordinates[3]);
           }

您将获得 html 中的所有内容,否则您将拥有文本和坐标,以便您可以找到更多信息,

在http://www.pdftron.com/pdfnet/samplecode.html上查找代码示例

于 2015-02-18T11:41:22.750 回答