【问题标题】:How can I grab each page of text in a Word doc separately (using .NET)?如何分别抓取 Word 文档中的每一页文本(使用 .NET)?
【发布时间】:2008-11-14 14:48:58
【问题描述】:

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

谢谢!

编辑:附加限制:我不能使用任何互操作的东西。

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

【问题讨论】:

    标签: .net ms-word full-text-search extract


    【解决方案1】:

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

    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】:

    您如何定义页面?

    如果您只计算部分/硬页,它会变得复杂,但可行。如果要计算软分页符,任务变得非常非常困难并且有些毫无意义。考虑到软分页符所在位置的确定是在运行时动态生成的,而不是存储在文件本身中。这取决于很多因素,包括活动的打印机驱动程序(是的,它可以针对不同计算机上的同一个文件进行更改)、字体、字距调整、行距、边距等等等。

    【讨论】:

    • 不幸的是,我想要软的,非常非常难的版本。不过我不会说它没有意义。这是页面的唯一定义,它实际上意味着现实世界中的任何东西(其他任何东西都不是真正的所见即所得)。我非常感谢您的澄清,非常感谢您的回复。
    • 在这种情况下,您可能必须“打印”到固定页面格式(例如 tiff 或 PDF)才能完成此操作,但请确保始终在同一台机器上使用相同的选择打印驱动程序以获得一致的结果。
    【解决方案3】:

    使用 Aspose 执行此操作的一种糟糕方法是将 Word 文件转换为 PDF,然后在每一页上抓取文本。

    我对 Aspose 内部结构或它们在转换时如何定义软页面一无所知,但这是迄今为止我所拥有的最好的。

    【讨论】:

      【解决方案4】:

      感谢您使用 Aspose.Words。

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

      您是否在 Aspose.Words 支持论坛中记录了您的请求?我们使用这些信息来维护投票系统,并将致力于首先获得更多投票的功能。

      【讨论】:

      • 不确定是否记录请求,但我确实在现有线程上询问过它。我被告知它即将到来,然后再也没有收到回音。转换为 PDF 然后使用 GetNextPageText 对我有用,但将来可能无法很好地扩展。如果你们最终将其公开,那肯定很棒。感谢您的关注!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多