tt-pdf-generator
Version: 
TT pdf generator - A powerful React-based PDF generation library for creating documents
100 lines (84 loc) • 2.15 kB
TypeScript
import { ReactElement } from 'react';
// Font configuration types
export interface FontConfig {
  family: string;
  fonts: {
    src: string;
    fontWeight?: number;
    fontStyle?: string;
  }[];
}
// Component data structure
export interface ComponentData {
  type: string;
  visible?: string;
  props?: Record<string, any>;
  children?: ComponentData[] | ComponentData | string | number;
}
// Template structure
export interface Template {
  fonts?: FontConfig[];
  components: ComponentData[];
  images?: Record<string, any>;
  [key: string]: any;
}
// Data structure (can be any valid JSON)
export type TemplateData = Record<string, any>;
// PDF Generator props
export interface PdfGeneratorProps {
  data: string;
  template: string;
}
// Component map for rendering
export interface ComponentMap {
  [key: string]: React.ComponentType<any>;
}
// Render function arguments
export interface RenderPdfComponentArgs {
  componentData: ComponentData | ComponentData[] | string | number;
  components: ComponentMap;
  data: TemplateData;
  allProps: Record<string, any>;
  images: Record<string, any>;
}
// PDF generation result
export type PdfResult = Blob;
// Error types
export interface PdfGenerationError extends Error {
  originalError?: Error;
  template?: string;
  data?: string;
}
// Function signatures
export type GeneratePdfFunction = (
  template: string,
  data: string,
) => Promise<PdfResult>;
export type ParseJsonFunction = (
  jsonString: string,
) => Template | TemplateData | null;
export type RenderPdfComponentFunction = (
  args: RenderPdfComponentArgs,
) => ReactElement | ReactElement[] | null;
// React PDF specific types
export type PdfDocumentElement = ReactElement<any>;
export type PdfComponentElement = ReactElement<any>;
// Main export
export declare const generatePdf: GeneratePdfFunction;
// Export all types
export type {
  FontConfig,
  ComponentData,
  Template,
  TemplateData,
  PdfGeneratorProps,
  ComponentMap,
  RenderPdfComponentArgs,
  PdfResult,
  PdfGenerationError,
  GeneratePdfFunction,
  ParseJsonFunction,
  RenderPdfComponentFunction,
  PdfDocumentElement,
  PdfComponentElement,
};