V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Licsber
V2EX  ›  问与答

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

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

    想到的是虚拟打印机方法,自己写一个打印机驱动,这样把所有文档都通过 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
    XiLingHost
        4
    XiLingHost  
       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 。新版格式各种库和第三方应用的兼容性也更好。
    XiLingHost
        10
    XiLingHost  
       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  
       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   ·   实用小工具   ·   935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:18 · PVG 06:18 · LAX 14:18 · JFK 17:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.