Ejemplo n.º 1
0
Archivo: ppt.py Proyecto: kennym/itools
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
Archivo: ppt.py Proyecto: kennym/itools
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
Ejemplo n.º 4
0
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)