Autoit 實現word拆分頁解析 (python同理)

Autoit 實現word拆分頁解析 (python同理)

背景

以前一直在作相關工做,因爲沒有找到解決最佳解決方案,老辦法思路是 python先將word 轉成pdf,按照頁碼 提取文字,從而實現word的頁索引工做。python

最近研究了一下vba,終於找到了最佳解決方案!!!api

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來操做spa

在vba中 頁對象有一個是 Rectangles屬性,解釋以下.net

下面的示例返回活動文檔中第一頁的矩形集合。code

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#文檔

相關文章
相關標籤/搜索