pptxtojson 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptxtojson",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "A javascript tool for parsing .pptx file",
5
5
  "type": "module",
6
6
  "main": "./dist/index.umd.js",
package/src/fill.js CHANGED
@@ -95,7 +95,7 @@ export function getBgGradientFill(bgPr, phClr, slideMasterContent, warpObj) {
95
95
 
96
96
  color_ary[i] = {
97
97
  pos: pos ? (pos / 1000 + '%') : '',
98
- color: `#${lo_color}`,
98
+ color: lo_color,
99
99
  }
100
100
  }
101
101
  const lin = grdFill['a:lin']
@@ -110,7 +110,9 @@ export function getBgGradientFill(bgPr, phClr, slideMasterContent, warpObj) {
110
110
  colors: color_ary.sort((a, b) => parseInt(a.pos) - parseInt(b.pos)),
111
111
  }
112
112
  }
113
- else if (phClr) return `#${phClr}`
113
+ else if (phClr) {
114
+ return phClr.indexOf('#') === -1 ? `#${phClr}` : phClr
115
+ }
114
116
  return null
115
117
  }
116
118
 
@@ -139,7 +141,7 @@ export async function getSlideBackgroundFill(warpObj) {
139
141
  else clrMapOvr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])
140
142
  }
141
143
  const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)
142
- background = `#${sldBgClr}`
144
+ background = sldBgClr
143
145
  }
144
146
  else if (bgFillTyp === 'GRADIENT_FILL') {
145
147
  const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)
@@ -208,7 +210,7 @@ export async function getSlideBackgroundFill(warpObj) {
208
210
  if (bgFillTyp === 'SOLID_FILL') {
209
211
  const sldFill = bgFillLstIdx['a:solidFill']
210
212
  const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)
211
- background = `#${sldBgClr}`
213
+ background = sldBgClr
212
214
  }
213
215
  else if (bgFillTyp === 'GRADIENT_FILL') {
214
216
  const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)
@@ -236,7 +238,7 @@ export async function getSlideBackgroundFill(warpObj) {
236
238
  if (bgFillTyp === 'SOLID_FILL') {
237
239
  const sldFill = bgPr['a:solidFill']
238
240
  const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)
239
- background = `#${sldBgClr}`
241
+ background = sldBgClr
240
242
  }
241
243
  else if (bgFillTyp === 'GRADIENT_FILL') {
242
244
  const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)
@@ -297,7 +299,7 @@ export async function getSlideBackgroundFill(warpObj) {
297
299
  if (bgFillTyp === 'SOLID_FILL') {
298
300
  const sldFill = bgFillLstIdx['a:solidFill']
299
301
  const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)
300
- background = `#${sldBgClr}`
302
+ background = sldBgClr
301
303
  }
302
304
  else if (bgFillTyp === 'GRADIENT_FILL') {
303
305
  const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)
@@ -325,7 +327,7 @@ export async function getSlideBackgroundFill(warpObj) {
325
327
  if (bgFillTyp === 'SOLID_FILL') {
326
328
  const sldFill = bgPr['a:solidFill']
327
329
  const sldBgClr = getSolidFill(sldFill, clrMap, undefined, warpObj)
328
- background = `#${sldBgClr}`
330
+ background = sldBgClr
329
331
  }
330
332
  else if (bgFillTyp === 'GRADIENT_FILL') {
331
333
  const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)
@@ -386,7 +388,7 @@ export async function getSlideBackgroundFill(warpObj) {
386
388
  if (bgFillTyp === 'SOLID_FILL') {
387
389
  const sldFill = bgFillLstIdx['a:solidFill']
388
390
  const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)
389
- background = `#${sldBgClr}`
391
+ background = sldBgClr
390
392
  }
391
393
  else if (bgFillTyp === 'GRADIENT_FILL') {
392
394
  const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)
@@ -462,7 +464,7 @@ export function getSolidFill(solidFill, clrMap, phClr, warpObj) {
462
464
  else if (solidFill['a:schemeClr']) {
463
465
  clrNode = solidFill['a:schemeClr']
464
466
  const schemeClr = 'a:' + getTextByPathList(clrNode, ['attrs', 'val'])
465
- color = getSchemeColorFromTheme(schemeClr, warpObj, clrMap, phClr) || '#ffffffff'
467
+ color = getSchemeColorFromTheme(schemeClr, warpObj, clrMap, phClr) || '#ffffff'
466
468
  }
467
469
  else if (solidFill['a:scrgbClr']) {
468
470
  clrNode = solidFill['a:scrgbClr']
package/src/fontStyle.js CHANGED
@@ -95,7 +95,7 @@ export function getFontShadow(node, warpObj) {
95
95
  if (shadow) {
96
96
  const { h, v, blur, color } = shadow
97
97
  if (!isNaN(v) && !isNaN(h)) {
98
- return h + 'px ' + v + 'px ' + (blur ? blur + 'px' : '') + ' ' + color
98
+ return h + 'pt ' + v + 'pt ' + (blur ? blur + 'pt' : '') + ' ' + color
99
99
  }
100
100
  }
101
101
  }
package/src/pptxtojson.js CHANGED
@@ -9,7 +9,7 @@ import { genTextBody } from './text'
9
9
  import { getCustomShapePath } from './shape'
10
10
  import { extractFileExtension, base64ArrayBuffer, getTextByPathList, angleToDegrees, getMimeType, isVideoLink, escapeHtml } from './utils'
11
11
  import { getShadow } from './shadow'
12
- import { getTableCellParams, getTableRowParams } from './table'
12
+ import { getTableBorders, getTableCellParams, getTableRowParams } from './table'
13
13
  import { RATIO_EMUs_Points } from './constants'
14
14
 
15
15
  export async function parse(file) {
@@ -748,6 +748,14 @@ function genTable(node, warpObj) {
748
748
  }
749
749
  if (thisTblStyle) thisTblStyle['tblStylAttrObj'] = tblStylAttrObj
750
750
 
751
+ let tbl_border
752
+ const tblStyl = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle'])
753
+ const tblBorderStyl = getTextByPathList(tblStyl, ['a:tcBdr'])
754
+ if (tblBorderStyl) {
755
+ const tbl_borders = getTableBorders(tblBorderStyl, warpObj)
756
+ if (tbl_borders) tbl_border = tbl_borders.bottom || tbl_borders.left || tbl_borders.right || tbl_borders.top
757
+ }
758
+
751
759
  let tbl_bgcolor = ''
752
760
  let tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:tblBg', 'a:fillRef'])
753
761
  if (tbl_bgFillschemeClr) {
@@ -821,7 +829,7 @@ function genTable(node, warpObj) {
821
829
  if (cell.hMerge) td.hMerge = cell.hMerge
822
830
  if (cell.fontBold || fontBold) td.fontBold = cell.fontBold || fontBold
823
831
  if (cell.fontColor || fontColor) td.fontColor = cell.fontColor || fontColor
824
- if (cell.fillColor || fillColor || tbl_bgcolor) td.fill = cell.fillColor || fillColor || tbl_bgcolor
832
+ if (cell.fillColor || fillColor || tbl_bgcolor) td.fillColor = cell.fillColor || fillColor || tbl_bgcolor
825
833
 
826
834
  tr.push(td)
827
835
  }
@@ -852,7 +860,7 @@ function genTable(node, warpObj) {
852
860
  if (cell.hMerge) td.hMerge = cell.hMerge
853
861
  if (cell.fontBold || fontBold) td.fontBold = cell.fontBold || fontBold
854
862
  if (cell.fontColor || fontColor) td.fontColor = cell.fontColor || fontColor
855
- if (cell.fillColor || fillColor || tbl_bgcolor) td.fill = cell.fillColor || fillColor || tbl_bgcolor
863
+ if (cell.fillColor || fillColor || tbl_bgcolor) td.fillColor = cell.fillColor || fillColor || tbl_bgcolor
856
864
 
857
865
  tr.push(td)
858
866
  }
@@ -866,6 +874,7 @@ function genTable(node, warpObj) {
866
874
  width,
867
875
  height,
868
876
  data,
877
+ ...(tbl_border || {}),
869
878
  }
870
879
  }
871
880
 
package/src/table.js CHANGED
@@ -1,6 +1,47 @@
1
1
  import { getShapeFill, getSolidFill } from './fill'
2
2
  import { getTextByPathList } from './utils'
3
+ import { getBorder } from './border'
3
4
 
5
+ export function getTableBorders(node, warpObj) {
6
+ let borderStyles = {}
7
+ if (node['a:bottom']) {
8
+ const obj = {
9
+ 'p:spPr': {
10
+ 'a:ln': node['a:bottom']['a:ln']
11
+ }
12
+ }
13
+ const border = getBorder(obj, undefined, warpObj)
14
+ borderStyles.bottom = border
15
+ }
16
+ if (node['a:top']) {
17
+ const obj = {
18
+ 'p:spPr': {
19
+ 'a:ln': node['a:top']['a:ln']
20
+ }
21
+ }
22
+ const border = getBorder(obj, undefined, warpObj)
23
+ borderStyles.top = border
24
+ }
25
+ if (node['a:right']) {
26
+ const obj = {
27
+ 'p:spPr': {
28
+ 'a:ln': node['a:right']['a:ln']
29
+ }
30
+ }
31
+ const border = getBorder(obj, undefined, warpObj)
32
+ borderStyles.right = border
33
+ }
34
+ if (node['a:left']) {
35
+ const obj = {
36
+ 'p:spPr': {
37
+ 'a:ln': node['a:left']['a:ln']
38
+ }
39
+ }
40
+ const border = getBorder(obj, undefined, warpObj)
41
+ borderStyles.left = border
42
+ }
43
+ return borderStyles
44
+ }
4
45
 
5
46
  export function getTableCellParams(tcNode, thisTblStyle, cellSource, warpObj) {
6
47
  const rowSpan = getTextByPathList(tcNode, ['attrs', 'rowSpan'])
@@ -35,10 +76,10 @@ export function getTableCellParams(tcNode, thisTblStyle, cellSource, warpObj) {
35
76
  fillColor,
36
77
  fontColor,
37
78
  fontBold,
38
- rowSpan,
39
- colSpan,
40
- vMerge,
41
- hMerge,
79
+ rowSpan: rowSpan ? +rowSpan : undefined,
80
+ colSpan: colSpan ? +colSpan : undefined,
81
+ vMerge: vMerge ? +vMerge : undefined,
82
+ hMerge: hMerge ? +hMerge : undefined,
42
83
  }
43
84
  }
44
85