mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
RTF Input: Add support for WMF images
This commit is contained in:
parent
8ad2ed33c4
commit
013b064013
@ -92,6 +92,7 @@ class RTFInput(InputFormatPlugin):
|
||||
|
||||
def extract_images(self, picts):
|
||||
self.log('Extracting images...')
|
||||
|
||||
count = 0
|
||||
raw = open(picts, 'rb').read()
|
||||
starts = []
|
||||
@ -111,18 +112,36 @@ class RTFInput(InputFormatPlugin):
|
||||
if len(enc) % 2 == 1:
|
||||
enc = enc[:-1]
|
||||
data = enc.decode('hex')
|
||||
ext = '.jpg'
|
||||
if 'EMF' in data[:200]:
|
||||
ext = '.wmf'
|
||||
elif 'PNG' in data[:200]:
|
||||
ext = '.png'
|
||||
count += 1
|
||||
name = (('%4d'%count).replace(' ', '0'))+ext
|
||||
name = (('%4d'%count).replace(' ', '0'))+'.wmf'
|
||||
open(name, 'wb').write(data)
|
||||
imap[count] = name
|
||||
#open(name+'.hex', 'wb').write(enc)
|
||||
return self.convert_images(imap)
|
||||
|
||||
def convert_images(self, imap):
|
||||
from calibre.utils.PythonMagickWand import ImageMagick
|
||||
with ImageMagick():
|
||||
for count, val in imap.items():
|
||||
try:
|
||||
imap[count] = self.convert_image(val)
|
||||
except:
|
||||
self.log.exception('Failed to convert', val)
|
||||
return imap
|
||||
|
||||
def convert_image(self, name):
|
||||
import calibre.utils.PythonMagickWand as p
|
||||
img = p.NewMagickWand()
|
||||
if img < 0:
|
||||
raise RuntimeError('Cannot create wand.')
|
||||
if not p.MagickReadImage(img, name):
|
||||
self.log.warn('Failed to read image:', name)
|
||||
name = name.replace('.wmf', '.jpg')
|
||||
p.MagickWriteImage(img, name)
|
||||
|
||||
return name
|
||||
|
||||
|
||||
def write_inline_css(self, ic):
|
||||
font_size_classes = ['span.fs%d { font-size: %spt }'%(i, x) for i, x in
|
||||
enumerate(ic.font_sizes)]
|
||||
|
Loading…
x
Reference in New Issue
Block a user