def process_item(entry, rectype, reclen): if rectype in (DOCUMENT, SLIDE, SLIDE_BASE, NOTES, HEADERS_FOOTERS, MAIN_MASTER, LIST, SLIDE_LIST_WITH_TEXT): pass elif rectype == TEXT_BYTES_ATOM: for i in range(reclen): buf = entry.read(1) if ord(buf) != 0x0d: yield convert_char(ord(buf)) else: yield u"\n" yield u"\n" elif rectype == TEXT_CHARS_ATOM or rectype == CSTRING: text_len = reclen / 2 for i in range(text_len): buf = entry.read(2) u = getshort(buf, 0) if u != 0x0d: yield convert_char(u) else: yield u"\n" yield u"\n" else: entry.seek(reclen, SEEK_CUR)
def do_ppt(entry): itemsread = 1 while itemsread: recbuf = entry.read(8) itemsread = len(recbuf) if entry.is_eof(): for char in process_item(entry, DOCUMENT_END, 0): yield char return if itemsread < 8: break rectype = getshort(recbuf, 2) reclen = getulong(recbuf, 4) if reclen < 0: return for char in process_item(entry, rectype, reclen): yield char