Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 8s
Build & Deploy / 🧪 QA (push) Successful in 2m18s
Build & Deploy / 🏗️ Build (push) Successful in 3m43s
Build & Deploy / 🚀 Deploy (push) Successful in 19s
Build & Deploy / 🧪 Post-Deploy Verification (push) Failing after 4m54s
Build & Deploy / 🔔 Notify (push) Successful in 1s
28 lines
995 B
TypeScript
28 lines
995 B
TypeScript
import * as React from 'react';
|
|
import { renderToBuffer } from '@react-pdf/renderer';
|
|
|
|
import type { ProductData } from '../model/types';
|
|
import { buildDatasheetModel } from '../model/build-datasheet-model';
|
|
import { loadImageAsPngDataUrl, loadQrAsPngDataUrl } from './assets';
|
|
import { DatasheetDocument } from './DatasheetDocument';
|
|
|
|
export async function generateDatasheetPdfBuffer(args: {
|
|
product: ProductData;
|
|
locale: 'en' | 'de';
|
|
}): Promise<Buffer> {
|
|
const model = buildDatasheetModel({ product: args.product, locale: args.locale });
|
|
|
|
const logoDataUrl =
|
|
(await loadImageAsPngDataUrl('/logo-blue.svg')) ||
|
|
(await loadImageAsPngDataUrl('/logo-white.svg')) ||
|
|
null;
|
|
|
|
const heroDataUrl = await loadImageAsPngDataUrl(model.product.heroSrc);
|
|
const qrDataUrl = await loadQrAsPngDataUrl(model.product.productUrl);
|
|
|
|
const element = (
|
|
<DatasheetDocument model={model} assets={{ logoDataUrl, heroDataUrl, qrDataUrl }} />
|
|
);
|
|
return await renderToBuffer(element);
|
|
}
|