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

如何将pdf2json生成并修改后的JSON文件转回PDF?

修改pdf2json生成的JSON后转回PDF的可行方法

首先明确:pdf2json本身不支持反向转换,它的核心是提取PDF的文本、位置和基础样式信息生成JSON,并没有保留完整的PDF结构数据。要实现修改后转回PDF,可通过以下两种思路处理:

1. 基于JSON数据重新渲染PDF

利用PDF生成类库,解析修改后的JSON,提取文本内容、坐标、字体大小、页面尺寸等信息,逐页重新绘制PDF。这种方法适合以文本为主的PDF,常见的库包括jsPDF(前端)、ReportLab(Python)、iText(Java)等。

以jsPDF为例,简单实现思路如下:

// 假设已加载修改后的JSON数据为jsonData
const doc = new jsPDF();

jsonData.Pages.forEach((page, index) => {
  // 设置当前页面尺寸
  doc.setPageSize([page.Width, page.Height]);
  // 遍历页面内所有文本块
  page.Texts.forEach(textBlock => {
    // 解码文本内容(pdf2json编码了特殊字符)
    const content = decodeURIComponent(textBlock.R[0].T);
    // 转换坐标系(pdf2json的y轴原点在页面顶部,jsPDF在底部)
    const x = textBlock.x;
    const y = page.Height - textBlock.y;
    // 设置字体大小
    const fontSize = textBlock.R[0].TS[1];
    doc.setFontSize(fontSize);
    // 绘制文本
    doc.text(content, x, y);
  });
  // 除最后一页外,添加新页面
  if (index !== jsonData.Pages.length - 1) {
    doc.addPage();
  }
});

// 导出修改后的PDF
doc.save('modified-output.pdf');

注意:这种方法需要手动处理字体匹配、文本对齐、换行逻辑;若原始PDF包含图片、图形等非文本元素,需额外从原PDF提取并插入到新PDF中。

2. 替换原始PDF中的文本内容

如果需要更精准还原原始PDF的样式,可结合原始PDF,将修改后的文本替换回对应位置:

  • 用PDF操作库(如PyPDF2、PDFBox)读取原始PDF
  • 解析修改后的JSON,定位每个文本块在原始PDF中的位置
  • 替换对应位置的文本内容,保留原始PDF的字体、排版、图形等资源

这种方式能最大程度保留原始PDF的样式,但需要处理文本块的精准定位和替换逻辑,复杂度较高。

关键注意事项

  • pdf2json的JSON不包含图片、矢量图形等非文本资源,反向转换时需从原PDF提取这些元素
  • 字体匹配是核心难点,JSON中的字体名称可能与系统字体存在差异,需手动映射或嵌入对应字体

内容的提问来源于stack exchange,提问作者0xracer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:53:13