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