import BaseService from "@Services/BaseService"; import { Service } from "typedi"; import puppeteer from "puppeteer"; export interface AnchoringProofData { rootHash: string; anchoringTime: string; txLink: string; office_name: string; } @Service() export default class AnchoringProofService extends BaseService { constructor() { super(); } // private static svgTemplateDocument: string = ` // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // [[ANCHORING_TIME]] // Certificat de dépôt international // Hash : // [[ROOT_HASH]] // // Déposant(s) // Auteur : // Not.IT // Partenaire technique : // Smart-Chain // // Explorateur blockchain // [[TX_LINK]] // // // `; private static svgTemplateDocumentBis: string = ` Certificat de dépôt international [[ANCHORING_TIME]] Nom de l'office [[OFFICE_NAME]] Déposant(s) LEcoffre.io Hash [[ROOT_HASH]] Explorateur blockchain [[TX_LINK]] À quoi ça sert ? Un certificat d'ancrage sur la blockchain permet d'établir de manière irréfutable l'enregistrement de données spécifiques à une date et une heure déterminées. Il constitue une preuve immuable et juridiquement opposable de l'existence et de l'intégrité des informations à un moment donné. En cas de litige, ce certificat peut être utilisé pour démontrer de manière incontestable que les données n'ont pas été altérées depuis leur enregistrement, offrant ainsi une preuve solide devant les tribunaux. Qu'est-ce qu'un explorateur blockchain ? Un explorateur blockchain est un outil numérique permettant d'accéder et de consulter les transactions et les données enregistrées sur la blockchain. Il assure une transparence totale, permettant à toute partie prenante de vérifier les opérations et les enregistrements effectués sur la chaîne de blocs. Qu'est-ce qu'un hash ? Un hash est une empreinte cryptographique unique générée par un algorithme à partir de données spécifiques. Il agit comme une signature numérique permettant de vérifier l'intégrité des données : toute modification, même infime, des données d'origine entraîne la production d'un hash distinct, garantissant ainsi l'authenticité et l'intégrité des informations. `; /** * @description : Generate a PDF file from a SVG template from anchoring proof data */ public async generate(data: AnchoringProofData): Promise { const browser = await puppeteer.launch({ headless: "new", executablePath: `/usr/bin/chromium`, args: ["--no-sandbox", "--disable-setuid-sandbox"], }); const page = await browser.newPage(); var htmlContent = ` ${AnchoringProofService.svgTemplateDocumentBis} `; htmlContent = htmlContent .replace("[[ROOT_HASH]]", data.rootHash) .replace("[[ANCHORING_TIME]]", data.anchoringTime) .replace("[[OFFICE_NAME]]", data.office_name) .replace(/\[\[TX_LINK\]\]/g, data.txLink); await page.setContent(htmlContent); await page.addStyleTag({ content: ` @page { size: A4 landscape; margin: 0; } html, body { margin: 0; padding: 0; width: 100%; height: 100%; } body { display: flex; justify-content: center; align-items: center; } svg { width: 100%; height: 100%; } `, }); const buffer = await page.pdf({ landscape: true, printBackground: false, format: "A4", }); await browser.close(); return buffer; } }