代码之家  ›  专栏  ›  技术社区  ›  Adam A

如何在Word文档中单独抓取每页文本(使用.NET)?

  •  1
  • Adam A  · 技术社区  · 16 年前

    我需要确定关键字出现在Word文档的哪些页面上。我有一些工具可以获取文档的文本,但是没有任何工具可以告诉我文本出现在哪个页面上。有人给我一个好的起点吗?我在使用.NET

    谢谢!

    编辑:附加约束:我不能使用任何互操作内容。

    如果有人知道稳定的库可以做到这一点,那也会有帮助。我用肉冻,但据我所知,它什么都没有。

    4 回复  |  直到 15 年前
        1
  •  2
  •   Douglas Anderson    16 年前

    这就是我获取文本的方法,我相信您可以将选择范围设置为一个页面,然后您可以测试该文本,可能是从您需要的内容向后一点,但可能是一个开始的地方。

    Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application();
    object missing = Type.Missing;
    object fileName = @"c:\file.doc";
    object objFalse = false;
    
    wordApplication.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;
    Microsoft.Office.Interop.Word.Document doc = wordApplication.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,ref objFalse, ref missing, ref missing, ref missing, ref missing);
    
    //I belevie you can define a SelectionRange and insert here
    doc.ActiveWindow.Selection.WholeStory();
    doc.ActiveWindow.Selection.Copy();
    
    IDataObject data = Clipboard.GetDataObject();
    string text = data.GetData(DataFormats.Text).ToString();
    
    doc.Close(ref missing, ref missing, ref missing);
    doc = null;
    
    wordApplication.Quit(ref missing, ref missing, ref missing);
    wordApplication = null;
    
        2
  •  0
  •   JohnFx    16 年前

    如何定义页面?

    如果只计算部分/硬页,则会使其复杂但可行。如果你想计算软断页,任务会变得非常困难,而且有点毫无意义。考虑到软页中断位置的确定是在运行时动态生成的,而不是存储在文件本身中。它取决于大量因素,包括活动的打印机驱动程序(是的,它可以在不同的计算机上为同一个文件更改)、字体、紧排、行距、页边距等。

        3
  •  0
  •   Adam A    16 年前

    使用aspose进行此操作的一个糟糕方法是将Word文件转换为PDF,然后在每个页面上获取文本。

    我不知道Aspose的内部结构,也不知道它们在转换时如何定义它们的软页面,但这是迄今为止我所得到的最好的。

        4
  •  0
  •   romeok    15 年前

    感谢您使用aspose.words。

    在公共API中,我们目前只有“流文档”信息,例如段落、表格、列表等。在内部,我们构建了一个页面布局模型,该模型具有页面、文本块、文本行等类。当然,文档模型和布局模型之间有内部链接,可以找出哪一页的结尾以及所有内容。通过公共API提供这些信息在我们的优先级列表中仍然是很高的。

    您是否在aspose.words支持论坛中记录了您的请求?我们使用此信息来维护投票系统,并将首先处理获得更多投票的功能。