2.0.2 • Published 8 months ago

pptx2json2 v2.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

🎨 pptxt2json2

一个运行在浏览器中,可以将 .pptx 文件转为可读的 JSON 数据的 JavaScript 库。

项目来源:pptxtojson 在原项目基础上增加读取pptx单页备注信息remark字段。单页组件读取title字段信息。

与其他的pptx文件解析工具的最大区别在于: 1. 直接运行在浏览器端; 2. 解析结果是可读的 JSON 数据,而不仅仅是把 XML 文件内容原样翻译成难以理解的 JSON。

在线DEMO:https://pipipi-pikachu.github.io/pptxtojson/

🪧 注意事项

⚒️ 使用场景

本仓库诞生于项目 PPTist ,希望为其“导入 .pptx 文件功能”提供一个参考示例。不过就目前来说,解析出来的PPT信息与源文件在样式上还是存在不少差距,还不足以直接运用到生产环境中。

但如果你只是需要提取PPT文件的文本内容和媒体资源信息,对排版精准度/样式信息没有特别高的要求,那么 pptxtojson 可能会对你有一些帮助。

📏 长度值单位

输出的JSON中,所有数值长度值单位都为pt(point)

注意:在0.x版本中,所有输出的长度值单位都是px(像素)

🔨安装

npm install pptx2json2

💿用法

<input type="file" accept="application/vnd.openxmlformats-officedocument.presentationml.presentation"/>
import { parse } from 'pptx2json2'

document.querySelector('input').addEventListener('change', evt => {
	const file = evt.target.files[0]
	
	const reader = new FileReader()
	reader.onload = async e => {
		const json = await parse(e.target.result)
		console.log(json)
	}
	reader.readAsArrayBuffer(file)
})
// 输出示例
{
	"slides": {
		"fill": {
			"type": "color",
			"value": "#FF0000"
		},
		"remark": '备注信息',
		"elements": [
			{
				"left":	0,
				"top": 0,
				"width": 72,
				"height":	72,
				"borderColor": "#1f4e79",
				"borderWidth": 1,
				"borderType": "solid",
				"borderStrokeDasharray": 0,
				"fillColor": "#5b9bd5",
				"content": "<p style=\"text-align: center;\"><span style=\"font-size: 18pt;font-family: Calibri;\">TEST</span></p>",
				"isFlipV": false,
				"isFlipH": false,
				"rotate": 0,
				"vAlign": "mid",
				"title": '标题',
				"name": "矩形 1",
				"type": "shape",
				"shapType": "rect"
			},
			// more...
		],
	},
	"size": {
		"width": 960,
		"height": 540
	}
}

📕 功能支持

幻灯片尺寸

proptype描述
widthnumber宽度
heightnumber高度

页面背景

proptype描述
type'color' 丨 'image' 丨 'gradient'背景类型
valueSlideColorFill 丨 SlideImageFill 丨 SlideGradientFill背景值

页内元素

文字

proptype描述
type'text'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
borderColorstring边框颜色
borderWidthnumber边框宽度
borderType'solid' 丨 'dashed' 丨 'dotted'边框类型
borderStrokeDasharraystring非实线边框样式
shadowShadow阴影
fillColorstring填充色
contentstring内容文字(HTML富文本)
isFlipVboolean垂直翻转
isFlipHboolean水平翻转
rotatenumber旋转角度
vAlignstring垂直对齐方向
isVerticalboolean是否为竖向文本
namestring元素名
titlestring可选信息标题

图片

proptype描述
type'image'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
srcstring图片地址(base64)
rotatenumber旋转角度
titlestring可选信息标题

形状

proptype描述
type'shape'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
borderColorstring边框颜色
borderWidthnumber边框宽度
borderType'solid' 丨 'dashed' 丨 'dotted'边框类型
borderStrokeDasharraystring非实线边框样式
shadowShadow阴影
fillColorstring填充色
contentstring内容文字(HTML富文本)
isFlipVboolean垂直翻转
isFlipHboolean水平翻转
rotatenumber旋转角度
shapTypestring形状类型
vAlignstring垂直对齐方向
pathstring路径(仅自定义形状存在)
namestring元素名

表格

proptype描述
type'table'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
borderColorstring边框颜色
borderWidthnumber边框宽度
borderType'solid' 丨 'dashed' 丨 'dotted'边框类型
dataTableCell表格数据

图表

proptype描述
type'chart'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
dataChartItem[] 丨 ScatterChartData图表数据
chartTypeChartType图表类型
barDir'bar' 丨 'col'柱状图方向
markerboolean是否带数据标记
holeSizestring环形图尺寸
groupingstring分组模式
stylestring图表样式

视频

proptype描述
type'video'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
blobstring视频blob
srcstring视频src

音频

proptype描述
type'audio'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
blobstring音频blob

Smart图

proptype描述
type'diagram'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
elements(Shape 丨 Text)[]子元素集合

多元素组合

proptype描述
type'group'类型
leftnumber水平坐标
topnumber垂直坐标
widthnumber宽度
heightnumber高度
elementsElement[]子元素集合

更多类型请参考 👇

https://github.com/pipipi-pikachu/pptxtojson/blob/master/dist/index.d.ts

🙏 感谢

本仓库大量参考了 PPTX2HTMLPPTXjs 的实现。

与它们不同的是,PPTX2HTML 和 PPTXjs 是将PPT文件转换为能够运行的 HTML 页面,而 pptxtojson 做的是将PPT文件转换为干净的 JSON 数据

📄 开源协议

MIT License | Copyright © 2020-PRESENT pipipi-pikachu

2.0.2

8 months ago

2.0.1

8 months ago

2.0.0

8 months ago

1.0.4

8 months ago