File size: 1,100 Bytes
88768cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from abc import ABC, abstractmethod
from PyPDF2 import PdfReader



class FileHandler(ABC):
    """Abstract base class for file handlers."""

    @abstractmethod
    def read_file(self, file):
        """Read the file and extract the text.

        Parameters:
        file (UploadedFile): The file to read.

        Returns:
        str: The extracted text.

        """
        pass

class PDFHandler(FileHandler):
    

    def read_file(self, file):
       
        try:
            pdf_reader = PdfReader(file)
            text = ""
            for page in pdf_reader.pages:
                page_text = page.extract_text()
                if page_text:
                    text += page_text
            return text
        except Exception as e:
            print(f"Error reading file: {e}")
            return ""  # return an empty string if an error occurs




class FileHandlerFactory:
   

    @staticmethod
    def get_file_handler(file_type):
       
        if file_type == "application/pdf":
            return PDFHandler()
        else:
            raise ValueError("Invalid file type")