如何迅速统计一批 Word 文档的总页数?

2021-05-24 14:44:49 +08:00
 Licsber

想到的是虚拟打印机方法,自己写一个打印机驱动,这样把所有文档都通过 PCL 或者其他格式统计,有没有好用的开源库可以参考?

1626 次点击
所在节点    问与答
23 条回复
renmu123
2021-05-24 15:09:36 +08:00
你要不找个你熟悉语言的 word 库,应该能直接统计
YvesX
2021-05-24 15:10:08 +08:00
……直接读文件不行吗

docx 文件可以按 zip 打开,/docProps/app.xml 明明白白地写着当前文件的页面和字数统计信息
Licsber
2021-05-24 15:43:08 +08:00
@renmu123 #1 刚刚试了 python 的 python-docx
遇到了新问题
使用 macOS 无法调用 win32com 将 doc 文件转化为 docx
顺路找到了 antiword 显示我这一个文件不是 Word
故此方案不可行 一批文件里同时有 doc 和 docx
XiLingHost
2021-05-24 15:43:36 +08:00
office 套件的文件一般都是 ooxml,你找个对应的库就可以了
Licsber
2021-05-24 15:43:47 +08:00
@YvesX #2 参加#3 回复 对于 doc 格式的 Word 文档就无能为力了 sad
Vegetable
2021-05-24 15:49:38 +08:00
全部打印成 PDF 呢?
Licsber
2021-05-24 15:51:48 +08:00
@XiLingHost #4 刚刚看了看 文件五花八门的 交后缀 wps 都有 这样的后缀我还可以打回重交 但是 doc 和 docx 总不能限制只提交 docx 吧
YvesX
2021-05-24 15:53:09 +08:00
doc 格式里面存的是二进制文件,也不是把 SummaryInformation 数据拉不出来,应该同样有现成的库可以用
Jirajine
2021-05-24 15:54:47 +08:00
@Licsber 都 2021 年了,完全不必要 doc 。新版格式各种库和第三方应用的兼容性也更好。
XiLingHost
2021-05-24 15:55:25 +08:00
@Licsber 为啥不可以,doc 都已经是多古老的格式了,让他们直接在 office 里转换啊
Licsber
2021-05-24 15:58:15 +08:00
@Vegetable #6 全部打印成 pdf 也是个办法 但是我觉得不优雅 造成了两倍的额外空间占用

@YvesX #8 如果是 win 系统可以用 win32api 的话就方便很多 可我这是 macOS 当然也可以每次需要统计就开个虚拟机 也不优雅

@Jirajine #9 谢谢回复 可我要统计的是同学上交上来的文件 甚至会有 word2003 保存出来的文档
Licsber
2021-05-24 16:04:10 +08:00
@XiLingHost #10 相较强制所有用 doc 的人全部改成 docx 这样的工作量而言 还是收集文档的时候顺带让每个人填一下页数更简便吧 强制转化绝对不可行 对用户要求太高了
qqjt
2021-05-24 16:19:00 +08:00
libreoffice 有 python sdk 的好像,可以试试。其实没啥可纠结的,windows 电脑操作就完事了
qqjt
2021-05-24 16:20:21 +08:00
@Licsber 统一下用 docx 格式提交,这要求还高?是对刚学电脑的小白来说吗?
Licsber
2021-05-24 16:47:54 +08:00
@qqjt #13 嗯 也看到了 libreoffice 的一些方法 觉得还是我一开始的想法方便 自己造一个虚拟打印机的轮子

@qqjt #14 可以一试 但万一有人是很老的电脑就玩完了
renmu123
2021-05-24 17:08:25 +08:00
https://files.catbox.moe/br2s83.png

我用编辑器文本模式打开的 doc,我标注的应该就是页码了,你可以自行测试一下。
Licsber
2021-05-24 18:06:42 +08:00
@renmu123 #16 这个思路有点怪 我试了试 没看出来什么规律 只看到有些东西在不断重复
rels/PK drs/downrev.xmlPK 类似的文本
ihipop
2021-05-24 18:51:17 +08:00
@Licsber libreoffice 可以读 doc
renmu123
2021-05-24 19:23:41 +08:00
@Licsber 我标注的这一行应该是文档的一些基础信息,比如有 word 版本,用户信息,页码,还有一些额外的信息我没仔细看,你用 16 进制模式打开应该也能看到。
play78
2021-05-24 19:41:04 +08:00
什么语言? java 的话,用 poi 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/778854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX