frontend_nyla/src/components/FilePreview/renderers/PdfRenderer.tsx
2025-09-08 16:46:59 +02:00

53 lines
1.6 KiB
TypeScript

import { IoIosWarning } from 'react-icons/io';
import { useLanguage } from '../../../contexts/LanguageContext';
import styles from '../FilePreview.module.css';
interface PdfRendererProps {
previewUrl?: string;
previewContent?: string;
fileName: string;
onError: () => void;
}
export function PdfRenderer({ previewUrl, previewContent, fileName, onError }: PdfRendererProps) {
const { t } = useLanguage();
const handleLoad = () => {
console.log('📄 PDF iframe loaded successfully:', { previewUrl, fileName });
};
const handleError = (event: React.SyntheticEvent<HTMLIFrameElement, Event>) => {
console.error('❌ PDF iframe failed to load:', { previewUrl, fileName, event });
onError();
};
// Handle corrupted PDF files (text content instead of PDF)
if (previewContent && !previewUrl) {
console.log('📄 Rendering corrupted PDF warning');
return (
<div className={styles.textContainer}>
<div className={styles.textHeader}>
<div className={styles.warningMessage}>
<span className={styles.warningIcon}><IoIosWarning /></span>
<span className={styles.warningText}>
{t('files.preview.pdfFileCorrupted', 'This file appears to be corrupted. It has a PDF extension but contains text content. Please re-upload the file if possible.')}
</span>
</div>
</div>
</div>
);
}
// Normal PDF rendering
return (
<iframe
src={previewUrl}
className={styles.previewIframe}
title={`Preview of ${fileName}`}
data-mime-type="application/pdf"
onLoad={handleLoad}
onError={handleError}
/>
);
}