Fix PDF cover extraction

This commit is contained in:
Kovid Goyal 2009-04-18 09:29:16 -07:00
parent f969ed39fe
commit 02cfaac014

View File

@ -10,7 +10,6 @@ from calibre import FileWrapper
from calibre.ebooks.metadata import MetaInformation, authors_to_string from calibre.ebooks.metadata import MetaInformation, authors_to_string
from calibre.ptempfile import TemporaryDirectory from calibre.ptempfile import TemporaryDirectory
from pyPdf import PdfFileReader, PdfFileWriter from pyPdf import PdfFileReader, PdfFileWriter
#import Image
try: try:
from calibre.utils.PythonMagickWand import \ from calibre.utils.PythonMagickWand import \
NewMagickWand, MagickReadImage, MagickSetImageFormat, \ NewMagickWand, MagickReadImage, MagickSetImageFormat, \
@ -95,7 +94,6 @@ def set_metadata(stream, mi):
stream.seek(0) stream.seek(0)
def get_cover(stream): def get_cover(stream):
data = cStringIO.StringIO()
try: try:
pdf = PdfFileReader(stream) pdf = PdfFileReader(stream)
@ -104,24 +102,21 @@ def get_cover(stream):
if len(pdf.pages) >= 1: if len(pdf.pages) >= 1:
output.addPage(pdf.getPage(0)) output.addPage(pdf.getPage(0))
with TemporaryDirectory('_pdfmeta') as tdir: with TemporaryDirectory('_pdfmeta') as tdir:
cover_path = os.path.join(tdir, 'cover.pdf') cover_path = os.path.join(tdir, 'cover.pdf')
outputStream = file(cover_path, "wb") with open(cover_path, "wb") as outputStream:
output.write(outputStream) output.write(outputStream)
outputStream.close() with ImageMagick():
with ImageMagick(): wand = NewMagickWand()
wand = NewMagickWand() MagickReadImage(wand, cover_path)
MagickReadImage(wand, cover_path) MagickSetImageFormat(wand, 'JPEG')
MagickSetImageFormat(wand, 'JPEG') MagickWriteImage(wand, '%s.jpg' % cover_path)
MagickWriteImage(wand, '%s.jpg' % cover_path) return open('%s.jpg' % cover_path, 'rb').read()
#img = Image.open('%s.jpg' % cover_path)
#img.save(data, 'JPEG')
except: except:
import traceback import traceback
traceback.print_exc() traceback.print_exc()
return data.getvalue() return ''