import { PDFDocument, rgb, StandardFonts } from 'pdf-lib';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

async function createSamplePDF() {
  const pdfDoc = await PDFDocument.create();
  const font = await pdfDoc.embedFont(StandardFonts.Helvetica);
  const boldFont = await pdfDoc.embedFont(StandardFonts.HelveticaBold);
  
  for (let i = 1; i <= 3; i++) {
    const page = pdfDoc.addPage([595.28, 841.89]);
    
    page.drawText('Company Attendance Management Policy', {
      x: 50,
      y: 800,
      size: 24,
      font: boldFont,
      color: rgb(0, 0, 0),
    });
    
    page.drawText('Version: v1.2 | Updated: 2026-01-01', {
      x: 50,
      y: 770,
      size: 12,
      font,
      color: rgb(0.5, 0.5, 0.5),
    });
    
    const content = [
      'Chapter 1: General Provisions',
      '',
      'Article 1: This policy is established to regulate attendance management and maintain normal work order.',
      '',
      'Article 2: This policy applies to all employees of the company.',
      '',
      'Article 3: Attendance management follows the principles of fairness, impartiality, and transparency.',
      '',
      'Chapter 2: Working Hours',
      '',
      'Article 4: The company implements standard working hours:',
      '- Working days: Monday to Friday',
      '- Working hours: 9:00 AM - 12:00 PM, 1:30 PM - 6:00 PM',
      '- Lunch break: 12:00 PM - 1:30 PM (1.5 hours)',
      '',
      'Article 5: Special positions may adjust working hours as needed with HR approval.',
      '',
      'Chapter 3: Attendance Methods',
      '',
      'Article 6: The company uses an electronic attendance system for recording.',
      '',
      'Article 7: Check-in requirements:',
      '- Morning check-in: No later than 10 minutes after start time',
      '- Evening check-out: No earlier than 10 minutes before end time',
      `- Official business or special circumstances require prior approval`,
      '',
      `Article ${i + 7}: Sample content on page ${i}`,
    ];
    
    let yPosition = 720;
    content.forEach((line) => {
      if (yPosition > 50) {
        page.drawText(line, {
          x: 50,
          y: yPosition,
          size: 12,
          font,
          color: rgb(0, 0, 0),
        });
        yPosition -= 20;
      }
    });
    
    page.drawText(`Page ${i} / 3`, {
      x: 250,
      y: 30,
      size: 10,
      font,
      color: rgb(0.5, 0.5, 0.5),
    });
  }
  
  const pdfBytes = await pdfDoc.save();
  
  const outputPath = path.join(__dirname, 'public', 'sample.pdf');
  fs.writeFileSync(outputPath, pdfBytes);
  
  console.log(`Sample PDF generated successfully!`);
  console.log(`File path: ${outputPath}`);
  console.log(`File size: ${(pdfBytes.length / 1024).toFixed(2)} KB`);
}

createSamplePDF().catch(console.error);
