You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何获取Word/PPT文档总页数?已实现PDF页数统计

在Angular中获取Word(doc/docx)和PPT文档的总页数

你当前的PDF页数统计是通过匹配二进制内容里的/Type /Page标记实现的,但Word和PPT的文件结构与PDF完全不同,没法用同样的正则方法。要实现这两类文档的页数统计,得借助专门的Office文档解析库,以下是具体方案:

Word(docx)文档页数统计

Word的页数是动态计算的(依赖纸张大小、字号、边距等渲染参数),前端无法获取绝对精准的页数,只能通过分页符或字符数估算,或者借助解析库读取文档内的分页信息。

用mammoth.js实现(支持docx)

  1. 安装依赖:
npm install mammoth --save
  1. 组件内实现代码:
import * as mammoth from 'mammoth';

getWordPageCount(event: Event) {
  const file = (event.target as HTMLInputElement).files[0];
  if (!file) return;

  const reader = new FileReader();
  reader.readAsArrayBuffer(file);
  reader.onloadend = async () => {
    try {
      const textResult = await mammoth.extractRawText({ arrayBuffer: reader.result as ArrayBuffer });
      
      // 方式1:通过分页符数量计算(准确,仅统计手动插入的分页)
      const pageBreakNum = (textResult.value.match(/\f/g) || []).length;
      console.log('Word文档页数(基于分页符):', pageBreakNum + 1);

      // 方式2:按字符数估算(近似值,可根据需求调整每页字数)
      const wordCount = textResult.value.replace(/\s+/g, ' ').trim().split(' ').length;
      const approxPageNum = Math.ceil(wordCount / 550); // 常规A4、五号字约每页550字
      console.log('Word文档近似页数:', approxPageNum);
    } catch (err) {
      console.error('解析Word文档失败:', err);
    }
  };
}

注意:如果是旧版.doc格式(非docx),前端库大多不支持解析,建议通过后端用Apache POI等工具处理后返回页数。

PPT文档页数统计

PPT的页数等价于幻灯片数量,解析后直接读取即可,用pptxjs库可以轻松实现:

  1. 安装依赖:
npm install pptxjs --save
  1. 组件内实现代码:
import * as pptx from 'pptxjs';

getPPTXPageCount(event: Event) {
  const file = (event.target as HTMLInputElement).files[0];
  if (!file) return;

  const reader = new FileReader();
  reader.readAsArrayBuffer(file);
  reader.onloadend = async () => {
    try {
      const presentation = await pptx.parse(reader.result as ArrayBuffer);
      console.log('PPT文档总页数:', presentation.slides.length);
    } catch (err) {
      console.error('解析PPT文档失败:', err);
    }
  };
}

内容的提问来源于stack exchange,提问作者Ismail Muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:20:34