pu369com

python 获取word页数

没想到获取个word页数这么简单的需求,实现起来还挺难。

1.根据网上说法:word文档中不保存总页数,只是在渲染时才根据文字和表格等去摆放到一页上,摆放不下时才展现下一页。所以从docx中取不到总页数

2.因此,仅用docx库不行,还需要用win32com。而win32com实际是:pip install pypiwin32   并且一定记得要重启python(重启仍不行可以试试https://blog.csdn.net/weixin_43149311/article/details/120806116  ,我重启IDLE就行了)

要获取Word文档的页数,我们可以使用以下步骤:

首先,将Word文档保存为临时文件。
然后,使用win32com.client模块打开该临时文件。
接下来,获取打开的Word应用程序的ActiveDocument。
最后,通过BuiltInDocumentProperties属性获取文档的页数。

3 代码:

复制代码
import docx
import os
import win32com.client as win32

def get_word_page_count(document_path):
    document = docx.Document(document_path)
    abs_path = os.path.abspath(document_path)

    # 保存文档为临时文件
    temp_path = os.path.join(os.path.dirname(abs_path), "~temp.docx")
    document.save(temp_path)

    # 打开临时文件并获取页数
    word = win32.gencache.EnsureDispatch("Word.Application")
    word.Visible = False
    doc = word.Documents.Open(temp_path)
    pages = doc.BuiltInDocumentProperties(14).Value
    doc.Close()
    word.Quit()

    # 删除临时文件
    os.remove(temp_path)

    return pages

document_path = "1.docx"
page_count = get_word_page_count(document_path)
print("Word文档的页数:", page_count)
复制代码

 

补充:今天执行上述代码出错: 'win32com.gen_py....' has no attribute 'CLSIDToClassMap'

 解决办法:删除目录<code>C:\Users\你的用户名\AppData\Local\Temp\gen_py\3.X中的缓存文件夹00020905-0000-0000-C000-000000000046x0x8x5即可,重新执行上述代码便不再报错。

 

参考:https://blog.51cto.com/u_16175516/6850938

https://blog.csdn.net/u011840075/article/details/124696371

https://blog.csdn.net/weixin_43149311/article/details/120806116

https://blog.51cto.com/mouday/5018378

https://blog.csdn.net/ericatardicaca/article/details/90721909

posted on   pu369com  阅读(638)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示