import { jsPDF } from 'jspdf';
import html2canvas from 'html2canvas';
import { FC } from 'react';
import Button from './Button';
import { useTranslation } from 'react-i18next';

interface PDFGeneratorProps {
    elementId: string;
    fileName: string;
}

const PDFGenerator: FC<PDFGeneratorProps> = ({ elementId, fileName }) => {
    const { t } = useTranslation('global');

    const generatePDF = async () => {
        const element = document.getElementById(elementId);
        if (!element) return;

        // تنظیم استایل‌های موقت برای PDF
        const originalStyles = element.getAttribute('style') || '';
        element.setAttribute('style', `
            ${originalStyles}
            width: 800px !important;
            margin: 0 auto !important;
            padding: 20px !important;
        `);

        const canvas = await html2canvas(element, {
            scale: 1.5, // کاهش کیفیت برای سایز کمتر
            useCORS: true,
            logging: false,
            backgroundColor: '#ffffff',
            windowWidth: 800,
            width: 800
        });

        // برگرداندن استایل‌های اصلی
        element.setAttribute('style', originalStyles);

        const imgData = canvas.toDataURL('image/jpeg', 0.8); // استفاده از JPEG با کیفیت 80%
        const pdf = new jsPDF({
            orientation: 'portrait',
            unit: 'mm',
            format: 'a4'
        });

        const imgWidth = 180; // کاهش عرض برای حاشیه بیشتر
        const imgHeight = (canvas.height * imgWidth) / canvas.width;

        // محاسبه موقعیت برای قرار دادن در وسط صفحه
        const x = (210 - imgWidth) / 2; // 210 عرض A4 در میلی‌متر
        const y = (297 - imgHeight) / 2; // 297 ارتفاع A4 در میلی‌متر

        pdf.addImage(imgData, 'JPEG', x, y, imgWidth, imgHeight);
        pdf.save(`${fileName}.pdf`);
    };

    return (
        <Button
            label={t('receip.get_factor')}
            className='bg-[#E8E8E8] text-description text-xs'
            onClick={generatePDF}
        />
    );
};

export default PDFGenerator; 