-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
96 lines (88 loc) · 2.68 KB
/
index.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
const express = require("express"),
app = express(),
puppeteer = require("puppeteer");
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
/* app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html')
}); */
async function timeout(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
app.use(express.static("public"));
app.get("/api", async (request, response) => {
let url = request.query.url;
var d = Math.random() * 10;
var n = Math.floor(d);
let fullFileName = "screenshot" + "-" + n + ".png";
url = "http://" + url;
try {
const browser = await puppeteer.launch({
args: ["--no-sandbox"],
});
const page = await browser.newPage();
await page.setViewport({
width: 1280,
height: 720,
});
let fullpag = request.query.fullpage;
let full = false;
if (fullpag == "true") {
full = true;
}
await page.waitFor(5000);
await page.goto(url); // Read url query parameter.
await timeout(2000);
const image = await page.screenshot({
path: "public/images/screenshot/" + fullFileName,
fullPage: full,
});
await browser.close();
response.set("Content-Type", "text/json");
response.json({ imageurl: "/images/screenshot/" + fullFileName });
} catch (error) {
response.status(500).send("Something went Wrong!");
}
});
app.get("/pdf", async (request, response) => {
let url = request.query.url;
var d = Math.random() * 10;
var n = Math.floor(d);
const url = req.query.target;
const landscape = req.query.landscape;
const size = req.query.size;
const mt = req.query.mt;
const mb = req.query.mb;
const ml = req.query.ml;
const mr = req.query.mr;
let fullFileName = "pdf" + "-" + n + ".png";
try {
const browser = await puppeteer.launch({
headless: true,
});
const webPage = await browser.newPage();
await webPage.setContent(url, {
waitUntil: "networkidle0",
});
const pdf = await webPage.pdf({
printBackground: true,
path: "public/pdfs/" + fullFileName,
format: size !== undefined ? size : "A4",
landscape: landscape == "true" ? true : false,
margin: {
top: mt !== undefined ? mt : "0px",
bottom: mb !== undefined ? mb : "0px",
left: ml !== undefined ? ml : "0px",
right: mr !== undefined ? mr : "0px",
},
});
await browser.close();
response.set("Content-Type", "text/json");
response.json({ imageurl: "/pdfs/" + fullFileName });
} catch (error) {
response.status(500).send("Something went Wrong!");
}
});
var listener = app.listen(3000, function () {
console.log("Your app is listening on port " + listener.address().port);
});