如何迅速统计一批 Word 文档的总页数? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Licsber
0.04D
V2EX    问与答

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

  •  
  •   Licsber 2021-05-24 14:44:49 +08:00 1878 次点击
    这是一个创建于 1606 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    23 条回复    2021-05-25 17:07:22 +08:00
    renmu123
        1
    renmu123  
       2021-05-24 15:09:36 +08:00 via Android
    你要不找个你熟悉语言的 word 库,应该能直接统计
    YvesX
        2
    YvesX  
       2021-05-24 15:10:08 +08:00
    ……直接读文件不行吗

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

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

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

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

    我用编辑器文本模式打开的 doc,我标注的应该就是页码了,你可以自行测试一下。
    Licsber
        17
    Licsber  
    OP
       2021-05-24 18:06:42 +08:00
    @renmu123 #16 这个思路有点怪 我试了试 没看出来什么规律 只看到有些东西在不断重复
    rels/PK drs/downrev.xmlPK 类似的文本
    ihipop
        18
    ihipop  
       2021-05-24 18:51:17 +08:00 via Android
    @Licsber libreoffice 可以读 doc
    renmu123
        19
    renmu123  
       2021-05-24 19:23:41 +08:00 via Android
    @Licsber 我标注的这一行应该是文档的一些基础信息,比如有 word 版本,用户信息,页码,还有一些额外的信息我没仔细看,你用 16 进制模式打开应该也能看到。
    play78
        20
    play78  
       2021-05-24 19:41:04 +08:00
    什么语言? java 的话,用 poi 。
    danbai
        21
    danbai  
    PRO
       2021-05-24 19:49:09 +08:00
    通过 aspose 库可行 该库付费
    Document doc = new Document(file.getInputStream());
    int num = doc.getPageCount();
    miao1007
        22
    miao1007  
       2021-05-24 22:04:39 +08:00 via iPhone
    先转为 pandoc 然后 wc
    Licsber
        23
    Licsber  
    OP
       2021-05-25 17:07:22 +08:00
    @ihipop #18 嗯 一样要在 macOS 上引入新的工具链 我在看虚拟打印机方法了 试试魔改开源的 PDF Writer


    @renmu123 #19 在我的测试文档下 二进制 doc 文件打开类似信息都没找到

    @play78 #20 语言不限制 常见语言基本都可以快速调起来 demo 就是很难找相关的

    @danbai #21 付费库就算了 可见这确实是个需求 不知道为什么没人开源

    @miao1007 #22 pandoc 可以把一页转化为一行么 还是第一次见这样的框架
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2749 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 14:33 PVG 22:33 LAX 07:33 JFK 10:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86