From 67de464e1dc2089ce0d009d055c4c05ec9e06691 Mon Sep 17 00:00:00 2001 From: Hyko Date: Mon, 13 Apr 2026 18:50:13 -0400 Subject: [PATCH] refactor(pdf): simplify PDF module by removing redundant utilities Remove helper functions (cmToPoints, inchesToPoints, mmToPoints, createElement, PAGE_SIZES) and consolidate re-exports from @react-pdf/renderer into a single export statement. Retain only the getFilename utility and streamline the module to reduce unnecessary abstraction over the underlying library. --- src/core/pdf/index.js | 120 ++---------------------------------------- 1 file changed, 4 insertions(+), 116 deletions(-) diff --git a/src/core/pdf/index.js b/src/core/pdf/index.js index 6af82a4..bcd25cb 100644 --- a/src/core/pdf/index.js +++ b/src/core/pdf/index.js @@ -1,121 +1,9 @@ -/** - * PDF Generation Utilities - * Wrapper around @react-pdf/renderer for PDF generation - * - * Usage in modules: - * import { renderToBuffer } from '@zen/core/pdf'; - */ - -import { renderToBuffer as reactPdfRenderToBuffer } from '@react-pdf/renderer'; -import React from 'react'; +export { renderToBuffer, Document, Page, View, Text, Image, Link, StyleSheet, Font } from '@react-pdf/renderer'; /** - * Render a React PDF document to a buffer - * @param {React.Element} document - React PDF document element - * @returns {Promise} PDF buffer - * - * @example - * import { Document, Page, Text } from '@react-pdf/renderer'; - * - * const MyDoc = () => ( - * - * - * Hello World - * - * - * ); - * - * const buffer = await renderToBuffer(); - */ -export async function renderToBuffer(document) { - return await reactPdfRenderToBuffer(document); -} - -/** - * Create a React element for PDF rendering - * @param {Function} Component - React component - * @param {Object} props - Component props - * @returns {React.Element} - */ -export function createElement(Component, props) { - return React.createElement(Component, props); -} - -/** - * Get a suggested filename for a PDF - * @param {string} prefix - Filename prefix - * @param {string|number} identifier - Unique identifier - * @param {Date} date - Date for the filename (default: today) - * @returns {string} Suggested filename - * - * @example - * getFilename('invoice', '12345'); // 'invoice-12345-2024-01-15.pdf' + * Get a suggested filename for a PDF. + * @example getFilename('invoice', '12345') // 'invoice-12345-2024-01-15.pdf' */ export function getFilename(prefix, identifier, date = new Date()) { - const dateStr = date.toISOString().split('T')[0]; - return `${prefix}-${identifier}-${dateStr}.pdf`; + return `${prefix}-${identifier}-${date.toISOString().split('T')[0]}.pdf`; } - -/** - * Convert centimeters to points (for PDF dimensions) - * @param {number} cm - Centimeters - * @returns {number} Points - */ -export function cmToPoints(cm) { - return cm * 28.3465; -} - -/** - * Convert inches to points (for PDF dimensions) - * @param {number} inches - Inches - * @returns {number} Points - */ -export function inchesToPoints(inches) { - return inches * 72; -} - -/** - * Convert millimeters to points (for PDF dimensions) - * @param {number} mm - Millimeters - * @returns {number} Points - */ -export function mmToPoints(mm) { - return mm * 2.83465; -} - -/** - * Common page sizes in points - */ -export const PAGE_SIZES = { - A4: { width: 595.28, height: 841.89 }, - LETTER: { width: 612, height: 792 }, - LEGAL: { width: 612, height: 1008 }, - A3: { width: 841.89, height: 1190.55 }, - A5: { width: 419.53, height: 595.28 }, -}; - -// Re-export react-pdf components for convenience -export { - Document, - Page, - View, - Text, - Image, - Link, - StyleSheet, - Font, - PDFViewer, - BlobProvider, - PDFDownloadLink, -} from '@react-pdf/renderer'; - -// Default export -export default { - renderToBuffer, - createElement, - getFilename, - cmToPoints, - inchesToPoints, - mmToPoints, - PAGE_SIZES, -};