Small Nest.js-based project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
test-assignment-datawrapper/src/screenshots/screenshotter.service.ts

26 lines
614 B

import { Injectable } from '@nestjs/common';
import puppeteer from 'puppeteer'
type TakeScreenshotOptions = {
imageType: 'jpeg' | 'png'
url: URL
}
@Injectable()
export class ScreenshotterService {
async takeScreenshot(options: TakeScreenshotOptions): Promise<Buffer> {
const browser = await puppeteer.launch()
try {
const page = await browser.newPage()
await page.goto(options.url.toString())
const image = await page.screenshot({
type: options.imageType,
encoding: 'binary'
}) as Buffer
return image
} finally {
browser.close()
}
}
}