2
2
PDF: PDF image loader
3
3
'''
4
4
5
+ try :
6
+ from PIL import Image as PILImage
7
+ except :
8
+ raise
9
+
5
10
from kivy .logger import Logger
6
11
from kivy .core .image import ImageLoaderBase , ImageLoader
7
12
8
13
Debug = False
9
14
10
15
import io
11
16
from pyPdf import PdfFileWriter , PdfFileReader
17
+ import PythonMagick as pm
12
18
13
19
class ImageLoaderPDF (ImageLoaderBase ):
14
20
'''Image loader for PDF'''
15
21
16
- def __init__ (self , page = 0 , filename = None , ** kwargs ):
22
+ def __init__ (self , filename , page = 0 , ** kwargs ):
17
23
self .page = page
18
24
super (ImageLoaderPDF , self ).__init__ (filename , ** kwargs )
19
25
@@ -28,6 +34,7 @@ def load(self, filename):
28
34
# first extract the page from the pdf
29
35
pdf = PdfFileReader (open (filename , 'rb' ))
30
36
p2 = pdf .getPage (self .page )
37
+ size = p2 .cropBox [2 :]
31
38
w = PdfFileWriter ()
32
39
w .addPage (p2 )
33
40
f = io .BytesIO ()
@@ -36,11 +43,11 @@ def load(self, filename):
36
43
37
44
# then convert the one page pdf filebuffer to an image
38
45
blob = pm .Blob (f .read ())
39
- blobpng = pm .Blob ()
40
- pm .Image (blob ).write (blobpng , 'jpg ' )
46
+ blobjpg = pm .Blob ()
47
+ pm .Image (blob ).write (blobjpg , 'rgb ' )
41
48
#blobpng.data
42
49
43
- im = PILImage .frombuffer ('rgb ' , len ( blobpng . data ), blobpng .data )
50
+ im = PILImage .frombuffer ('RGB ' , size , blobjpg .data )
44
51
45
52
except :
46
53
Logger .warning ('Image: Unable to load image <%s>' % filename )
0 commit comments