• Autoit 实现word拆分页解析 (python同理)


    Autoit 实现word拆分页解析 (python同理)

    背景

    之前一直在做相关工作,由于没有找到解决最佳解决方案,老办法思路是 python先将word 转成pdf,按照页码 提取文字,从而实现word的页索引工作。

    最近研究了一下vba,终于找到了最佳解决方案!!!

    AutoIt

    我用AutoIt测试的,AutoIt调用vba

    #include <MsgBoxConstants.au3>
    #include <Word.au3>
    
    ; 创建应用对象
    Local $oWord = _Word_Create()
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word UDF: _Word_DocOpen 示例", _
            "创建新 Word 应用对象时发生错误." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    
    ; *****************************************************************************
    ; 只读打开文档
    ; *****************************************************************************
    Local $sDocument = 'D:Desktop	zcpaBJ自动打印新建文件夹AutoPrinterlogackupFile2019-04-03 08h39m03s140天职业字[2019]11884号2.单体审计报告2018-标准无保留意见.docx'
    Local $doc = _Word_DocOpen($oWord, $sDocument, Default, Default, True)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word UDF: _Word_DocOpen 示例 1", "打开文档 '.ExtrasTest.doc' 发生错误." & _
            @CRLF & "@error = " & @error & ", @extended = " & @extended)
    
    ;关键部分!!!! 
    ; $doc 是当前活动文档,Pages是页码索引,Item是矩形框索引 改成请自行更改测试,因为一页可能有多个矩形框 
    ;返回值时 活动文档某一页的 矩形框中的文本
    
    Local $objPage = $doc.ActiveWindow _
     .Panes(1).Pages(2).Rectangles.Item(2).Range.Text
    MsgBox(1,1,$objPage)
    
    
    MsgBox($MB_SYSTEMMODAL, "Word UDF: _Word_DocOpen 示例 1", "文档 '" & $sDocument & "' 已成功打开.")
    
    

    思路

    整体思路是调用vba,由于目前python没有发现 有库可以对 页对象进行操作,所以采用了调用底层vba来操作

    在vba中 页对象有一个是 Rectangles属性,解释如下

    下面的示例返回活动文档中第一页的矩形集合。

    Dim objRectangles As Rectangles 
     
    Set objRectangles = ActiveDocument.ActiveWindow _ 
     .Panes(1).Pages(1).Rectangles
    

    然后顺藤摸瓜找到了Rectangles对象可以操作Range ,这样就可以获得某一页的某一矩形 内的 text,之后对于大多数页对象的操作也就解决了。

    python同理,使win32库调用 vba就好了

    附vba官方中文文档https://docs.microsoft.com/zh-cn/office/vba/api/
    之前的思路]https://mp.csdn.net/mdeditor/87099782#

  • 相关阅读:
    spring boot下载本地静态文件最实用
    非常实用的MySQL中if、ifnull函数以及case/when的使用
    java获取访问地址IP的简单方法
    Oracle数据库视图的创建以及使用
    http-post调用接口简单代码
    orale数据库to_char时间中英文转换
    java线程的简单实用
    java小数保留位数四舍五入
    二项式反演
    学习总结-后缀数组
  • 原文地址:https://www.cnblogs.com/jokerBi/p/10757674.html
Copyright © 2020-2023  润新知