import { useState } from 'react'; import ToolContent from '@components/ToolContent'; import ToolPdfInput from '@components/input/ToolPdfInput'; import { ToolComponentProps } from '@tools/defineTool'; import { convertPdfToPngImages } from './service'; import ToolMultiFileResult from '@components/result/ToolMultiFileResult'; type ImagePreview = { blob: Blob; url: string; filename: string; }; export default function PdfToPng({ title }: ToolComponentProps) { const [input, setInput] = useState(null); const [images, setImages] = useState([]); const [zipBlob, setZipBlob] = useState(null); const [loading, setLoading] = useState(false); const compute = async (_: {}, file: File | null) => { if (!file) return; setLoading(true); setImages([]); setZipBlob(null); try { const { images, zipFile } = await convertPdfToPngImages(file); setImages(images); setZipBlob(zipFile); } catch (err) { console.error('Conversion failed:', err); } finally { setLoading(false); } }; return ( } resultComponent={ { return new File([img.blob], img.filename, { type: 'image/png' }); })} zipFile={zipBlob} loading={loading} loadingText="Converting PDF pages" /> } getGroups={null} toolInfo={{ title: 'Convert PDF pages into PNG images', description: 'Upload your PDF and get each page rendered as a high-quality PNG. You can preview, download individually, or get all images in a ZIP.' }} /> ); }