如何使用Delphi在Windows Word编辑器或Pdf编辑器中的光标下获取单词?

雷姆齐·麦卡

我正在尝试准备一个Delphi项目。在这个项目中,我需要获取用户在Windows Word编辑器或Pdf编辑器中选择的单词。到目前为止,我已经看到了一些在Memo或Notbook中将单词放在光标下的示例,但是我需要在其他编辑器(例如MsWord或AdobePdf编辑器)中将单词放在光标下。

马丁·A

这对我使用D7和Word 2007有用:

procedure TForm1.GetSelectedText;
var
  MSWord,
  Selection,
  SelectedText : OleVariant;
begin
  try
    MsWord := GetActiveOleObject('Word.Application');
  except
    try
      MsWord := CreateOleObject('Word.Application');
      MsWord.Visible := True;
    except
      Exception.Create('Error');
    end;
  end;

  Selection := MSWord.Selection;
  if not VarIsEmpty(Selection) then begin
    SelectedText := Selection.Text;
    Caption := SelectedText;
  end;

end;

显然,如果您的代码中已有其他对象,则将上述内容重新编写为独立函数并传递对现有MSWord对象的引用将是微不足道的。

就像我在评论中说的那样,在Acrobat / Pdf中执行等效操作是一个不同的技术问题,需要使用自己的q。但是,经过调查,我认为没有直接的方法可以做到这一点。

  • 如果将Acrobat类型库导入Delphi,并给其一个单位Acrobat_Tlb.Pas,则会看到它包含一个COM对象接口CAcroPDDoc。

  • 您可以为Acrobat中当前活动的文档实例化该对象。但是,关于Acrobat的COM对象模型的一件奇怪的事情是*它没有提供对文档中文本内容(如果有)的任何有用访问。

  • 但是,从CAcroPDDoc界面,可以通过使用对CAcroPDDoc.GetJSObject的调用来访问文档的Acrobat内部JavaScript对象。

  • 一旦获得了对JS对象的引用,就可以进行非常有限的文本处理,尤其是有一种方法“ GetPageNthWord(Page,WordNum,StripWhiteSpace)”可以“执行其在锡罐上的说明”。就实现而言,这是我所掌握的(如果您想查看代码,请发布新问题)。

  • 从那里,如果您有时间,有专门知识和有一定的爱好(我目前还没有),您显然可以检索表示屏幕上选择矩形的另一个JS对象,并通过某种方式将其与第N个不同单词的坐标进行比较GetPageNthWord,您可以识别选择了哪个。不是QED,ISTM。

所有这些都是足够的性能,如果只是我,我会告诉用户将所选内容复制到剪贴板,在剪贴板中可以轻松地从Delphi代码中进行选择。

* -有时与Acrobat自动化一起使用时,我会感觉到Adobe已竭尽所能,无法轻松获取.PDF文件中的文本。那是否与原始PDF最初被认为是只写介质的可能的伪造故事有关,以便可以保证可以将其放入领域并确保不能对其进行修改,所以我不知道。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何知道编辑器中的光标位置索引

来自分类Dev

如何在Ace编辑器中获取光标位置(而不是行或列)?

来自分类Dev

TinyMCE-多个RTF编辑器-如何获取鼠标光标的焦点以跟踪选择了哪个编辑器

来自分类Dev

TinyMCE-多个RTF编辑器-如何获取鼠标光标的焦点以跟踪选择了哪个编辑器

来自分类Dev

如何在猫王编辑器中搜索当前单词?

来自分类Dev

如何在视图页面中获取Word编辑器进行约会

来自分类Dev

如何从Summernote编辑器中获取纯文本?

来自分类Dev

如何在Ace编辑器中获取选定的文本?

来自分类Dev

如何从ACE-Angular编辑器中获取值

来自分类Dev

如何从jQuery LineControl编辑器中获取textarea值?

来自分类Dev

如何在Froala编辑器中获取原始HTML

来自分类Dev

如何在Progress 11.6 AppBuilder的部分编辑器和过程编辑器中获取语法突出显示

来自分类Dev

如何通过Rich获取光标位置:编辑器Richfaces由javascript

来自分类Dev

如何通过编辑器在容器Docker中编辑文件

来自分类Dev

如何将光标从项目视图移动到Intellij Idea中的编辑器?

来自分类Dev

如何在光标所在的 TinyMCE 编辑器中插入文本?

来自分类Dev

Vim编辑器:使用Alt + Return选择单词

来自分类Dev

如何使Groovy编辑器中的Eclipse Java编辑器模板可用

来自分类Dev

剑道编辑器:如何在剑道编辑器中插入图像?

来自分类Dev

使用JSF PrimeFaces的文本编辑器,如何使用iText在PDF中添加文本

来自分类Dev

在VIM编辑器中,如何始终突出显示某些特定单词?

来自分类Dev

如何在Nano文本编辑器中删除当前单词?

来自分类Dev

在Eclipse中,如何默认使用系统编辑器打开.pdf文件?

来自分类Dev

如何使用CDN中的requirejs加载ace编辑器?

来自分类Dev

如何使用Vim编辑器替换括号中的模式

来自分类Dev

如何使用GWT的编辑器框架?

来自分类Dev

Delphi:在属性编辑器中浏览组件

来自分类Dev

如何获取被TinyMCE编辑器替换的textarea的id属性

来自分类Dev

获取系统中使用的默认文本编辑器

Related 相关文章

  1. 1

    如何知道编辑器中的光标位置索引

  2. 2

    如何在Ace编辑器中获取光标位置(而不是行或列)?

  3. 3

    TinyMCE-多个RTF编辑器-如何获取鼠标光标的焦点以跟踪选择了哪个编辑器

  4. 4

    TinyMCE-多个RTF编辑器-如何获取鼠标光标的焦点以跟踪选择了哪个编辑器

  5. 5

    如何在猫王编辑器中搜索当前单词?

  6. 6

    如何在视图页面中获取Word编辑器进行约会

  7. 7

    如何从Summernote编辑器中获取纯文本?

  8. 8

    如何在Ace编辑器中获取选定的文本?

  9. 9

    如何从ACE-Angular编辑器中获取值

  10. 10

    如何从jQuery LineControl编辑器中获取textarea值?

  11. 11

    如何在Froala编辑器中获取原始HTML

  12. 12

    如何在Progress 11.6 AppBuilder的部分编辑器和过程编辑器中获取语法突出显示

  13. 13

    如何通过Rich获取光标位置:编辑器Richfaces由javascript

  14. 14

    如何通过编辑器在容器Docker中编辑文件

  15. 15

    如何将光标从项目视图移动到Intellij Idea中的编辑器?

  16. 16

    如何在光标所在的 TinyMCE 编辑器中插入文本?

  17. 17

    Vim编辑器:使用Alt + Return选择单词

  18. 18

    如何使Groovy编辑器中的Eclipse Java编辑器模板可用

  19. 19

    剑道编辑器:如何在剑道编辑器中插入图像?

  20. 20

    使用JSF PrimeFaces的文本编辑器,如何使用iText在PDF中添加文本

  21. 21

    在VIM编辑器中,如何始终突出显示某些特定单词?

  22. 22

    如何在Nano文本编辑器中删除当前单词?

  23. 23

    在Eclipse中,如何默认使用系统编辑器打开.pdf文件?

  24. 24

    如何使用CDN中的requirejs加载ace编辑器?

  25. 25

    如何使用Vim编辑器替换括号中的模式

  26. 26

    如何使用GWT的编辑器框架?

  27. 27

    Delphi:在属性编辑器中浏览组件

  28. 28

    如何获取被TinyMCE编辑器替换的textarea的id属性

  29. 29

    获取系统中使用的默认文本编辑器

热门标签

归档