从pdf viewer中提取文本和所有Font信息

时间:2015-01-27 12:37:17

标签: winforms pdf itextsharp pdfviewer pdftron

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

1)所选文本的坐标。

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

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

4)所选文字的页码。

这样我就可以使用这些信息从相同主题的pdf中找到文本。

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

我的方法是修复表单,以便用户不会更改长度,宽度

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

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

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

但我相信,必须有一个简单的方法。我试图找到帮助,但无法找到这样的帮助。请提供相关文档并帮助找出开始任务的起点。

1 个答案:

答案 0 :(得分:0)

使用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

上查找代码示例