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\tzcpa\BJ自动打印\新建文件夹\AutoPrinter\log\backupFile\2019-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", "打开文档 '.\Extras\Test.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#
Autoit 实现word拆分页解析 (python同理)的更多相关文章
- 实例解析Python设计模式编程之桥接模式的运用
实例解析Python设计模式编程之桥接模式的运用 这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #e ...
- 解析Python编程中的包结构
解析Python编程中的包结构 假设你想设计一个模块集(也就是一个"包")来统一处理声音文件和声音数据.通常由它们的扩展有不同的声音格式,例如:WAV,AIFF,AU),所以你可能 ...
- django之分页,纯python代码
Django中分页 py文件代码 """ 自定义分页组件 可以返回分页的数据和分页的HTML代码 """ from django.http ...
- word文档的python解析
主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parse 1. 文件格式装换 因为很多各种各样的原因,至今还有一些word文档是doc的格式存的,对于这种,如 ...
- 【Python】解析Python中类的使用
目录结构: contents structure [-] 类的基本使用 专有方法 继承 单重继承 多重继承 砖石继承 1.类的基本使用 下面是类使用的一个简单案例, class person: &qu ...
- python学习(解析python官网会议安排)
在学习python的过程中,做练习,解析https://www.python.org/events/python-events/ HTML文件,输出Python官网发布的会议时间.名称和地点. 对ht ...
- xml 解析 python
1 综述 有很多种解析方法. (1) DOM 缺点是:1 不能解析格式不正确或者不规则xml 2据说只能解析utf-8格式,非utf-8需要转码 与SAX比较,DOM典型的缺点是比较慢,消耗更 ...
- Restful API学习Day5 - DRF之限制 分页 解析器和渲染器
参考文档: Django REST framework基础:认证.权限.限制 Django REST framework基础:分页 Django REST framework基础:解析器和渲染器 一. ...
- 简单实用的分页类-python
django自带的分页虽然挺好,但是就想自己弄个通用的 自己写了个分页的类,用的是python, 其他语言改下语法就能用了. #定义好类.class pagemanage: def __init_ ...
随机推荐
- Java地位被撼动?Java与JavaScript的趣事连载
第一回 JavaScript的进攻 公元2014年,Java 第八代国王终于登上了王位. 第一次早朝,国王坐在高高的宝座上,看着毕恭毕敬的大臣,第一次体会到了皇权的威力. 德高望重的IO大臣颤悠悠地走 ...
- AndroidManifest设置android:allowBackup="false"报错
概述 设置android:allowBackup="false"的必要性 Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功 ...
- springboot~基于单元测试的mongodb
添加对应版本的包 testCompile('de.flapdoodle.embed:de.flapdoodle.embed.mongo:1.46.0') 在测试之前,它会根据你的操作系统去下载当前的m ...
- 如何利用HTTP缓存来加快你的网站应用
缓存在web环境各个环节都有实现,有CPU缓存.文件缓存.程序的Opcode缓存(APC,eAccelerator).内存缓存(Memcached,Redis).代理服务器(Nginx,Squid). ...
- git使用教程指南
前言 Git是一个开源的分布式版本控制系统.其核心就在于版本控制. 在实际编码过程中,我们往往会忘记上次对文件的修改内容.若是刚刚修改的还好说,撤销操作即可.但若这是你昨天做的修改并关闭了IDE呢 ...
- 【春华秋实】.NET Core之只是多看了你一眼
感官初体验 技术学习是一件系统性的事情,如果拒绝学习,那么自己就会落后以至于被替代..NET也是一样,当开源.跨平台成为主流的时候,如果再故步自封,等待.NET的就是死路一条,幸好.NET Core问 ...
- javascript小记三则:ASP.NET启动web调试,窗体自动放大的方法
源码如下,简单一句JS,轻松解决窗体不会自动放大的浏览器: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- c#进阶一:使用ILDASM来查看c#中间语言
平时工作的时候总是使用ctrl c+ctrl v去快速开发实现业务功能,但是在工作之余,我们也应该要注意静下心来去学习和提高自己.进阶的文章随性来写,不定时更新.希望可以和大家共同学习,共同进步.今天 ...
- C#,记录--一个方法中,完成对数据增删改操作
实际应用中,一般不会使用delete彻底的删除数据,大多都是逻辑删除 为了不把本文写成小作文,举个小栗子吧 表 A,deletestate为置删除字段,int类型,值为0和1 表中五条数据 查询 se ...
- jQuery里面的DOM操作(查找,创建,添加,删除节点)
一:创建元素节点(添加) 创建元素节点并且把节点作为元素的子节点添加到DOM树上 append(): 在元素下添加元素 用法:$("id").append("定义的节点& ...