-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpdf-conf.js
98 lines (85 loc) · 2.34 KB
/
pdf-conf.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
const puppeteer = require('puppeteer')
const shell = require('shelljs')
const fs = require('fs')
// const { spawn } = require('child_process')
let server, page, browser
const pdfFilePath = './src/assets/Lina_Ragauskaite_c.pdf'
const buildLatestForPdf = () => {
shell.exec('npm run build-noref')
}
const buildLatestForLive = () => {
shell.exec('npm run build')
}
const createBrowser = async () => {
browser = await puppeteer.launch({headless: true, devtools: false})
page = await browser.newPage()
await page.setViewport({width: 1600, height: 900})
}
const createServer = () => {
// server = spawn('cmd', ['/c', 'http-server', './dist/', '-p', '4200'])
server = shell.exec('http-server ./dist/ -p 4200', {async: true})
}
const connectPage = async () => {
return page.goto('http://localhost:4200/#/pdf?conf=1', {waitUntil: ['networkidle2', 'load']})
}
// const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms))
const pdfValid = () => {
const stats = fs.statSync(pdfFilePath)
const fileSizeInBytes = stats.size
const fileSizeInKb = fileSizeInBytes * 0.001
return fileSizeInKb > 100
}
const generatePdf = async () => {
const height = await page.evaluate(() => {
return document.body.clientHeight
})
killNodes(server.pid)
server.kill()
console.log('Http-server killed.')
await page.pdf({
path: pdfFilePath,
printBackground: true,
width: 1600,
height: height,
pageRanges: '1'
})
}
const killNodes = (id) => {
// if (process.platform === 'win32') {
shell.exec(`taskkill /pid ${id} /f /t`)
// } else {
// shell.exec('pkill node')
// }
}
;(async () => {
buildLatestForPdf()
console.log('Build complete for PDF capture.')
await createServer()
console.log('Http-server started.')
await createBrowser()
console.log('Broswer opened.')
let connected = false
while (!connected) {
try {
await connectPage()
connected = true
console.log('Page loaded.')
} catch (error) {
console.log('Error laoding page.', error)
}
}
await generatePdf()
console.log('PDF generated.')
await page.close()
await browser.close()
console.log('Browser closed.')
if (pdfValid()) {
console.log('PDF OK')
buildLatestForLive()
console.log('Build complete for live release.')
process.exit(0)
} else {
console.log('PDF NOK')
process.exit(1)
}
})()