python-docx库找不到相关的页面对象,网上查找多说是word是流动分页的,文件内容本身并不存储分页结果,具体分页情况都是等到所有的图文渲染后才能确定。
后来在vba中发现了Rectangles对象,其中有页面属性,故使用win32com库调用vba相关内容来实现需求
下载相关库
pip install pywin32
import win32com
from win32com.client import Dispatch, DispatchEx
import os
# 指定copy页
page_n = 2
word = Dispatch('Word.Application') # 打开word应用程序
try:
word.Visible = 0 # 后台运行,不显示
word.DisplayAlerts = 0 # 不警告
path = os.path.abspath('test.docx') # word文件路径
doc_add = word.Documents.Add()
doc_add.SaveAs(os.path.abspath('test_new.docx')) # 创建新文件
doc_new = word.Documents.Open(os.path.abspath('test_new.docx'))
doc = word.Documents.Open(FileName=path)
# 页对象
pages = doc.ActiveWindow.Panes(1).Pages.Count
if page_n > pages:
print("指定页索引超出已有页面")
else:
objRectangles = doc.ActiveWindow.Panes(1).Pages(page_n).Rectangles
for i in range(objRectangles.Count):
objRectangles.Item(i+1).Range.Copy()
doc_new.Range(doc_new.Content.End - 1,doc_new.Content.End - 1).Paste()
doc.Close()
doc_new.Save()
doc_new.Close()
except Exception as e:
print(e)
finally:
word.Quit
已测试过没有问题,如遇到问题可以评论区交流
本文发布于:2024-09-14 19:07:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1726312063391622.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |