diff --git a/src/calibre/ebooks/conversion/preprocess.py b/src/calibre/ebooks/conversion/preprocess.py index 230d759755..dad77ea3aa 100644 --- a/src/calibre/ebooks/conversion/preprocess.py +++ b/src/calibre/ebooks/conversion/preprocess.py @@ -26,17 +26,10 @@ def sanitize_head(match): def chap_head(match): chap = match.group('chap') title = match.group('title') -<<<<<<< TREE if not title: return '

'+chap+'


\n' else: return '

'+chap+'
\n'+title+'


\n' -======= - if not title: - return '

'+chap+'


' - else: - return '

'+chap+'
'+title+'


' ->>>>>>> MERGE-SOURCE def wrap_lines(match): ital = match.group('ital') diff --git a/src/calibre/ebooks/pdb/ereader/writer.py b/src/calibre/ebooks/pdb/ereader/writer.py index cc90b41fb6..65eb35157e 100644 --- a/src/calibre/ebooks/pdb/ereader/writer.py +++ b/src/calibre/ebooks/pdb/ereader/writer.py @@ -6,6 +6,8 @@ Write content to ereader pdb file. import struct, zlib +import Image, cStringIO + from calibre.ebooks.oeb.base import OEB_IMAGES from calibre.ebooks.pdb.header import PdbHeaderBuilder from calibre.ebooks.pdb.ereader import image_name @@ -52,14 +54,22 @@ class Writer(object): image += image_name(item.href) image = image.ljust(62, '\x00') - image += item.data - images.append(image) + im = Image.open(cStringIO.StringIO(item.data)) + + data = cStringIO.StringIO() + im.save(data, 'PNG') + data = data.getvalue() + + image += data + + if len(image) < 65505: + images.append(image) return images def _metadata(self, metadata): - return '' + return '\x00\x00\x00\x00\x00' def _header_record(self, text_items, image_items): ''' @@ -72,22 +82,36 @@ class Writer(object): if image_items > 0: image_data_offset = text_items + 1 meta_data_offset = image_data_offset + image_items + last_data_offset = meta_data_offset + 1 else: meta_data_offset = text_items + 1 - image_data_offset = meta_data_offset + last_data_offset = meta_data_offset + 1 + image_data_offset = last_data_offset record = u'' # Version record += struct.pack('>H', version) record = record.ljust(12, '\x00') + # Non-text offset, everything between record 0 and non_text_offset is text pages record += struct.pack('>H', non_text_offset) + record = record.ljust(28, '\x00') + # Footnote and Sidebar rec + record += struct.pack('>H', 0) + record += struct.pack('>H', 0) + record += struct.pack('>H', last_data_offset) record = record.ljust(40, '\x00') + # image pages record += struct.pack('>H', image_data_offset) record = record.ljust(44, '\x00') + # metadata string record += struct.pack('>H', meta_data_offset) + record = record.ljust(48, '\x00') + # footnote and sidebar offsets + record += struct.pack('>H', last_data_offset) + record += struct.pack('>H', last_data_offset) record = record.ljust(52, '\x00') - record += struct.pack('>H', meta_data_offset) + record += struct.pack('>H', last_data_offset) return record