WFDASH-WEBAPP/scripts/dev/debug-logo-url.tsx
SJCoetz 714e910949 feat: add branded quote PDF generation and in-app viewer
This commit adds full quote PDF generation functionality with per-company letterhead branding:
- Server-side PDF rendering using @react-pdf/renderer matching the sample quote layout
- In-app modal PDF viewer with print, download, and new-tab controls
- Letterhead service to fetch and apply company-specific branding (CNL/ISHERWOOD)
- ZAR currency and date formatting utilities for South African quotes
- Updated QuoteAttachment type to handle PocketBase's array-based file tokens
- Fixed PocketBase attachment URL generation in quote email card
- Removed deprecated `included_in_quote` field from QuoteItem and quotes service
- Updated quote item creation test to validate draft item logic
- Added comprehensive unit tests for PDF rendering and formatting helpers
- Added dev scripts for debugging PDF and image rendering issues
- Added sample generated PDF files for visual verification
- Updated tsconfig to exclude development scripts directory
- Added @react-pdf/renderer production dependency
- Removed JEI as a valid letterhead option per requirements
2026-06-23 08:30:38 +02:00

21 lines
757 B
TypeScript

import * as React from "react";
import { Document, Page, View, Image, pdf } from "@react-pdf/renderer";
import fs from "fs";
async function main() {
const url = "https://pocketbase-gnqc88suy8fqk6wyryjjdpvl.169.239.180.130.sslip.io/api/files/pbc_1010367695/851t7163ks1f9qk/1u8lvckq51g_my2g8gttaf.jpg";
const inst = pdf(
<Document>
<Page size="A4" style={{ padding: 40, fontFamily: "Helvetica" }}>
<View>
<Image src={url} style={{ width: 110, height: 68 }} />
</View>
</Page>
</Document>
);
const buf = Buffer.from(await inst.toString(), "binary");
fs.writeFileSync("/tmp/debug-url.pdf", buf);
console.log("Size:", buf.length);
}
main().catch((e) => { console.error("FAIL", e); process.exit(1); });