File size: 2,054 Bytes
5f78728
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import fitz


def process_pdf(
    pdf_bytes,
    mode
):
    """
    Returns list of images
    extracted from PDF
    """

    doc = fitz.open(
        stream=pdf_bytes,
        filetype="pdf"
    )

    extracted = []

    if mode == "Extract Embedded Images":

        counter = 1

        for page_num in range(
            len(doc)
        ):

            page = doc[page_num]

            images = (
                page.get_images(
                    full=True
                )
            )

            for img in images:

                xref = img[0]

                base = (
                    doc.extract_image(
                        xref
                    )
                )

                img_bytes = (
                    base["image"]
                )

                ext = (
                    base["ext"]
                )

                if len(
                    img_bytes
                ) < 1024:

                    continue

                extracted.append({

                    "name":
                    f"Extracted Design {counter}",

                    "bytes":
                    img_bytes,

                    "mime_type":
                    f"image/{ext}",

                    "analysis":
                    None,

                    "params":
                    None
                })

                counter += 1

    if (
        mode == "Render Entire Pages"
        or
        not extracted
    ):

        extracted = []

        for page_num in range(
            len(doc)
        ):

            page = doc[page_num]

            pix = (
                page.get_pixmap(
                    dpi=200
                )
            )

            extracted.append({

                "name":
                f"Page {page_num+1}",

                "bytes":
                pix.tobytes("png"),

                "mime_type":
                "image/png",

                "analysis":
                None,

                "params":
                None
            })

    return extracted