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 2023-10-11 16:53  pu369com  阅读(558)  评论(0编辑  收藏  举报

导航