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:
26
src/js/types/email-to-pdf-type.ts
Normal file
26
src/js/types/email-to-pdf-type.ts
Normal 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';
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user