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

能否复用pdfmake创建PDF的对象生成Excel文件?

复用pdfmake配置对象生成Excel的可行性及实现思路

可行,但需要对pdfmake的配置对象做数据提取与结构映射——毕竟pdfmake的结构是为PDF排版设计的,和Excel的行列式数据结构逻辑不同,直接复用原对象生成Excel不现实,但可以基于它提取核心数据再生成Excel。

以下是具体技术思路:

  • 第一步:从pdfmake配置中提取核心数据
    遍历pdfmake的dd.content结构,把排版用的文本标签和对应的数据拆解出来。比如你提供的示例里,"Address"和Customer2.address是一组键值对,"Responsibility"和Customer2.resp_org_name是另一组,我们可以写简单的遍历逻辑提取:

    // 提取结构化数据的示例代码
    const extractExcelData = (pdfContent) => {
      const dataMap = {};
      // 假设内容是标签+数据成对出现的结构
      const bodyItems = pdfContent[0].body;
      for (let i = 0; i < bodyItems.length; i += 2) {
        const label = bodyItems[i].text;
        const value = bodyItems[i + 1].text;
        dataMap[label] = value;
      }
      return dataMap;
    };
    const coreData = extractExcelData(dd.content);
    

    如果你的pdfmake配置有更复杂的结构(比如嵌套表格、列表),需要递归遍历content里的元素,区分文本、表格块等类型,针对性提取数据。

  • 第二步:选择前端Excel生成库
    用纯前端库就能完成Excel生成,比如SheetJS(xlsx),它支持把JSON、数组等结构化数据直接转成Excel文件,不需要依赖后端服务。

  • 第三步:将提取的数据映射为Excel结构并生成文件
    把第一步提取的结构化数据转成Excel需要的行列格式,再用SheetJS生成文件:

    // 用SheetJS生成Excel的示例代码
    import XLSX from 'xlsx';
    
    // 转成Excel工作表需要的二维数组:第一行是标题,第二行是数据
    const worksheetData = [
      Object.keys(coreData),
      Object.values(coreData)
    ];
    
    // 创建工作表和工作簿
    const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);
    const workbook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(workbook, worksheet, '客户信息');
    
    // 导出Excel文件
    XLSX.writeFile(workbook, '客户信息表.xlsx');
    
  • 可选:样式适配
    如果需要保留原PDF里的部分样式(比如文本颜色),可以使用SheetJS的扩展库xlsx-style,给对应单元格设置字体颜色、对齐方式等样式,不过这部分属于进阶需求,基础生成可以忽略。

内容的提问来源于stack exchange,提问作者Pooja Thapa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:27:33