-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbuild.js
103 lines (81 loc) · 1.99 KB
/
build.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/* eslint-disable unicorn/prevent-abbreviations, array-callback-return */
const fs = require('fs')
const PDFParser = require('pdf2json')
const filename = '[MS-LCID].pdf'
const pdfParser = new PDFParser()
console.time('build in')
pdfParser.on('pdfParser_dataError', errData => console.error(errData.parserError))
pdfParser.on('pdfParser_dataReady', pdfData => {
// Language | Location | ID | TAG | Version
const x = [4.612, 11.451, 21.677, 25.539, 29.516].reverse()
const defaultData = {
language: null,
location: null,
id: null,
tag: null,
version: null
}
const defaultKyes = Object.keys(defaultData).reverse()
let data = []
let y // Line
let check
let pdf
for (let i = 41; i < 68; i++) { // 68
y = []
check = false
pdf = pdfData.formImage.Pages[i].Texts
pdf = pdf.filter(e => {
if (e.R && e.R && e.R[0].T) {
if (e.R[0].T === 'Language') {
check = true
}
return check
}
return false
})
pdf = pdf.map(e => {
const res = {}
const indexY = y.indexOf(e.y)
const indexX = x.indexOf(x.find(r => e.x >= r))
if (indexY < 0) {
y.push(e.y)
res.y = y.length - 1
} else {
res.y = indexY
}
res.x = indexX
res.text = decodeURIComponent(e.R[0].T)
return res
})
pdf = y.map((_, index) => {
if (index <= 1) {
return false
}
return pdf.filter(e => e.y === index)
})
pdf = pdf.filter(e => e)
pdf = pdf.map(e => {
return e.reduce((total, element) => {
if (total[defaultKyes[element.x]]) {
total[defaultKyes[element.x]] += element.text
} else {
total[defaultKyes[element.x]] = element.text
}
return total
}, {...defaultData})
})
data = [...data, ...pdf]
}
data = data.filter(e => e.version)
data = data.map(e => {
e.id = Number(e.id)
return e
})
const output = {}
data.map(e => {
output[e.tag.toLowerCase()] = {...e}
})
fs.writeFileSync('./index.json', JSON.stringify(output, null, '\t'))
console.timeEnd('build in')
})
pdfParser.loadPDF(filename)