feat(email-to-pdf): add inline images, clickable links, and embedded attachments

- Add CID inline image support via base64 data URI replacement
- Implement clickable link extraction from HTML anchors using regex
- Embed email attachments into PDF using pymupdf embfile_add
- Reduce font sizes for more compact PDF output (18px subject, 12px body)
- Format date with timezone (UTC+HH:MM) while preserving original time
- Clean email address formatting (Name (email) instead of <brackets>)
- Add UI options: page size selector, CC/BCC toggle, attachments toggle
This commit is contained in:
abdullahalam123
2026-01-08 21:36:21 +05:30
parent 4a4a47158f
commit 280348763d
30 changed files with 3978 additions and 9416 deletions

View File

@@ -0,0 +1,26 @@
export interface EmailAttachment {
filename: string;
size: number;
contentType: string;
content?: Uint8Array;
contentId?: string;
}
export interface ParsedEmail {
subject: string;
from: string;
to: string[];
cc: string[];
bcc: string[];
date: Date | null;
rawDateString: string;
htmlBody: string;
textBody: string;
attachments: EmailAttachment[];
}
export interface EmailRenderOptions {
includeCcBcc?: boolean;
includeAttachments?: boolean;
pageSize?: 'a4' | 'letter' | 'legal';
}

View File

@@ -1,48 +1,48 @@
export * from './ocr-type.js';
export * from './form-creator-type.js';
export * from './digital-sign-type.js';
export * from './attachment-type.js';
export * from './edit-attachments-type.js';
export * from './edit-metadata-type.js';
export * from './divide-pages-type.js';
export * from './alternate-merge-page-type.js';
export * from './add-blank-page-type.js';
export * from './compare-pdfs-type.js';
export * from './fix-page-size-type.js';
export * from './view-metadata-type.js';
export * from './header-footer-type.js';
export * from './encrypt-pdf-type.js';
export * from './flatten-pdf-type.js';
export * from './crop-pdf-type.js';
export * from './background-color-type.js';
export * from './posterize-type.js';
export * from './decrypt-pdf-type.js';
export * from './combine-single-page-type.js';
export * from './change-permissions-type.js';
export * from './validate-signature-type.js';
export * from './remove-restrictions-type.js';
export * from './page-dimensions-type.js';
export * from './extract-attachments-type.js';
export * from './pdf-multi-tool-type.js';
export * from './ocr-pdf-type.js';
export * from './delete-pages-type.js';
export * from './invert-colors-type.js';
export * from './table-of-contents-type.js';
export * from './organize-pdf-type.js';
export * from './merge-pdf-type.js';
export * from './extract-images-type.js';
export * from './extract-pages-type.js';
export * from './pdf-layers-type.js';
export * from './sanitize-pdf-type.js';
export * from './reverse-pages-type.js';
export * from './text-color-type.js';
export * from './n-up-pdf-type.js';
export * from './linearize-pdf-type.js';
export * from './remove-metadata-type.js';
export * from './rotate-pdf-type.js';
export * from './pdf-booklet-type.js';
export * from './page-numbers-type.js';
export * from './pdf-to-zip-type.js';
export * from './sign-pdf-type.js';
export * from './add-watermark-type.js';
export * from './ocr-type.ts';
export * from './form-creator-type.ts';
export * from './digital-sign-type.ts';
export * from './attachment-type.ts';
export * from './edit-attachments-type.ts';
export * from './edit-metadata-type.ts';
export * from './divide-pages-type.ts';
export * from './alternate-merge-page-type.ts';
export * from './add-blank-page-type.ts';
export * from './compare-pdfs-type.ts';
export * from './fix-page-size-type.ts';
export * from './view-metadata-type.ts';
export * from './header-footer-type.ts';
export * from './encrypt-pdf-type.ts';
export * from './flatten-pdf-type.ts';
export * from './crop-pdf-type.ts';
export * from './background-color-type.ts';
export * from './posterize-type.ts';
export * from './decrypt-pdf-type.ts';
export * from './combine-single-page-type.ts';
export * from './change-permissions-type.ts';
export * from './validate-signature-type.ts';
export * from './remove-restrictions-type.ts';
export * from './page-dimensions-type.ts';
export * from './extract-attachments-type.ts';
export * from './pdf-multi-tool-type.ts';
export * from './ocr-pdf-type.ts';
export * from './delete-pages-type.ts';
export * from './invert-colors-type.ts';
export * from './table-of-contents-type.ts';
export * from './organize-pdf-type.ts';
export * from './merge-pdf-type.ts';
export * from './extract-images-type.ts';
export * from './extract-pages-type.ts';
export * from './pdf-layers-type.ts';
export * from './sanitize-pdf-type.ts';
export * from './reverse-pages-type.ts';
export * from './text-color-type.ts';
export * from './n-up-pdf-type.ts';
export * from './linearize-pdf-type.ts';
export * from './remove-metadata-type.ts';
export * from './rotate-pdf-type.ts';
export * from './pdf-booklet-type.ts';
export * from './page-numbers-type.ts';
export * from './pdf-to-zip-type.ts';
export * from './sign-pdf-type.ts';
export * from './add-watermark-type.ts';
export * from './email-to-pdf-type.ts';