mirror of
https://github.com/dadosfera/maestro.git
synced 2026-11-09 16:49:08 +00:00
FEAT: pii
This commit is contained in:
@@ -14,6 +14,7 @@ interface IMetadata {
|
||||
host?: string;
|
||||
origin?: string;
|
||||
custom_host?: string;
|
||||
is_mask?: boolean;
|
||||
}
|
||||
|
||||
export function PackTheMetadata(info: IMetadata): Metadata {
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import { stringify } from 'csv'
|
||||
|
||||
export class CsvParser<T> {
|
||||
async parse(data: T[]) {
|
||||
return new Promise((resolve, reject) => {
|
||||
stringify(data, { header: true }, function (err, output) {
|
||||
if (err) reject(err);
|
||||
console.log(output)
|
||||
|
||||
resolve(output)
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import { readFileSync } from 'fs';
|
||||
import Handlebars from 'handlebars';
|
||||
|
||||
export class HtmlParser<T> {
|
||||
constructor(private readonly templatePath: string) {}
|
||||
parse(data: T[]) {
|
||||
const templateSource = readFileSync(this.templatePath, 'utf8');
|
||||
|
||||
const template = Handlebars.compile(templateSource);
|
||||
|
||||
return template({
|
||||
dados: data,
|
||||
dataGeracao: new Date().toLocaleString('pt-BR'),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
import puppeteer from "puppeteer";
|
||||
|
||||
export class PDFParser<T extends string> {
|
||||
async parse(data: T) {
|
||||
try {
|
||||
const browser = await puppeteer.launch({
|
||||
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,
|
||||
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage']
|
||||
});
|
||||
|
||||
const page = await browser.newPage();
|
||||
page.setDefaultNavigationTimeout(0);
|
||||
|
||||
await page.setContent(data, {
|
||||
waitUntil: 'networkidle0',
|
||||
timeout: 30000
|
||||
});
|
||||
|
||||
// Configurações adicionais para garantir um PDF válido
|
||||
const pdfBuffer = await page.pdf({
|
||||
format: 'A4',
|
||||
printBackground: true,
|
||||
margin: {
|
||||
top: '20mm',
|
||||
right: '15mm',
|
||||
bottom: '20mm',
|
||||
left: '15mm'
|
||||
},
|
||||
preferCSSPageSize: true,
|
||||
displayHeaderFooter: false,
|
||||
headerTemplate: '',
|
||||
footerTemplate: '',
|
||||
omitBackground: false,
|
||||
pageRanges: '',
|
||||
tagged: true,
|
||||
outline: false,
|
||||
timeout: 30000
|
||||
});
|
||||
|
||||
await browser.close();
|
||||
|
||||
return pdfBuffer;
|
||||
} catch (error) {
|
||||
console.error('Error generating PDF:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user