def __init__(self, namespace, rPr=None): self.namespace = namespace self.linked_style = None if rPr is None: for p in self.all_properties: setattr(self, p, inherit) else: X, g = namespace.XPath, namespace.get for p in ( 'b', 'bCs', 'caps', 'cs', 'dstrike', 'emboss', 'i', 'iCs', 'imprint', 'rtl', 'shadow', 'smallCaps', 'strike', 'vanish', 'webHidden', ): setattr(self, p, binary_property(rPr, p, X, g)) read_font(rPr, self, X, g) read_text_border(rPr, self, X, g) read_color(rPr, self, X, g) read_highlight(rPr, self, X, g) read_shd(rPr, self, X, g) read_letter_spacing(rPr, self, X, g) read_underline(rPr, self, X, g) read_vert_align(rPr, self, X, g) read_position(rPr, self, X, g) read_lang(rPr, self, X, g) for s in X('./w:rStyle[@w:val]')(rPr): self.linked_style = g(s, 'w:val') self._css = None
def __init__(self, namespace, tblPr=None): self.namespace = namespace if tblPr is None: for p in self.all_properties: setattr(self, p, inherit) else: self.overrides = inherit self.bidi = binary_property(tblPr, 'bidiVisual', namespace.XPath, namespace.get) for x in ('width', 'float', 'padding', 'shd', 'justification', 'spacing', 'indent', 'borders', 'band_size', 'look'): f = globals()['read_%s' % x] f(tblPr, self, self.namespace.XPath, self.namespace.get) parent = tblPr.getparent() if self.namespace.is_tag(parent, 'w:style'): self.overrides = {} for tblStylePr in self.namespace.XPath('./w:tblStylePr[@w:type]')(parent): otype = self.namespace.get(tblStylePr, 'w:type') orides = self.overrides[otype] = {} for tblPr in self.namespace.XPath('./w:tblPr')(tblStylePr): orides['table'] = TableStyle(self.namespace, tblPr) for trPr in self.namespace.XPath('./w:trPr')(tblStylePr): orides['row'] = RowStyle(self.namespace, trPr) for tcPr in self.namespace.XPath('./w:tcPr')(tblStylePr): orides['cell'] = CellStyle(self.namespace, tcPr) for pPr in self.namespace.XPath('./w:pPr')(tblStylePr): orides['para'] = ParagraphStyle(self.namespace, pPr) for rPr in self.namespace.XPath('./w:rPr')(tblStylePr): orides['run'] = RunStyle(self.namespace, rPr) self._css = None
def __init__(self, trPr=None): if trPr is None: for p in self.all_properties: setattr(self, p, inherit) else: for p in ('hidden', 'cantSplit'): setattr(self, p, binary_property(trPr, p)) for p in ('spacing', 'height'): f = globals()['read_%s' % p] f(trPr, self) self._css = None
def __init__(self, namespace, trPr=None): self.namespace = namespace if trPr is None: for p in self.all_properties: setattr(self, p, inherit) else: for p in ("hidden", "cantSplit"): setattr(self, p, binary_property(trPr, p, namespace.XPath, namespace.get)) for p in ("spacing", "height"): f = globals()["read_%s" % p] f(trPr, self, namespace.XPath, namespace.get) self._css = None
def __init__(self, namespace, trPr=None): self.namespace = namespace if trPr is None: for p in self.all_properties: setattr(self, p, inherit) else: for p in ('hidden', 'cantSplit'): setattr( self, p, binary_property(trPr, p, namespace.XPath, namespace.get)) for p in ('spacing', 'height'): f = globals()['read_%s' % p] f(trPr, self, namespace.XPath, namespace.get) self._css = None
def __init__(self, elem, embed_relationships, XPath, get): self.name = self.family_name = get(elem, 'w:name') self.alt_names = tuple( get(x, 'w:val') for x in XPath('./w:altName')(elem)) if self.alt_names and not has_system_fonts(self.name): for x in self.alt_names: if has_system_fonts(x): self.family_name = x break self.embedded = {} for x in ('Regular', 'Bold', 'Italic', 'BoldItalic'): for y in XPath('./w:embed%s[@r:id]' % x)(elem): rid = get(y, 'r:id') key = get(y, 'w:fontKey') subsetted = get(y, 'w:subsetted') in {'1', 'true', 'on'} if rid in embed_relationships: self.embedded[x] = Embed(embed_relationships[rid], key, subsetted) self.generic_family = 'auto' for x in XPath('./w:family[@w:val]')(elem): self.generic_family = get(x, 'w:val', 'auto') ntt = binary_property(elem, 'notTrueType', XPath, get) self.is_ttf = ntt is inherit or not ntt self.panose1 = None self.panose_name = None for x in XPath('./w:panose1[@w:val]')(elem): try: v = get(x, 'w:val') v = tuple(int(v[i:i + 2], 16) for i in range(0, len(v), 2)) except (TypeError, ValueError, IndexError): pass else: self.panose1 = v self.panose_name = panose_to_css_generic_family(v) self.css_generic_family = { 'roman': 'serif', 'swiss': 'sans-serif', 'modern': 'monospace', 'decorative': 'fantasy', 'script': 'cursive' }.get(self.generic_family, None) self.css_generic_family = self.css_generic_family or self.panose_name or 'serif'
def __init__(self, rPr=None): self.linked_style = None if rPr is None: for p in self.all_properties: setattr(self, p, inherit) else: for p in ( "b", "bCs", "caps", "cs", "dstrike", "emboss", "i", "iCs", "imprint", "rtl", "shadow", "smallCaps", "strike", "vanish", "webHidden", ): setattr(self, p, binary_property(rPr, p)) for x in ( "text_border", "color", "highlight", "shd", "letter_spacing", "sz", "underline", "vert_align", "lang", "font_family", ): f = globals()["read_%s" % x] f(rPr, self) for s in XPath("./w:rStyle[@w:val]")(rPr): self.linked_style = get(s, "w:val") self._css = None
def __init__(self, namespace, rPr=None): self.namespace = namespace self.linked_style = None if rPr is None: for p in self.all_properties: setattr(self, p, inherit) else: X, g = namespace.XPath, namespace.get for p in ( 'b', 'bCs', 'caps', 'cs', 'dstrike', 'emboss', 'i', 'iCs', 'imprint', 'rtl', 'shadow', 'smallCaps', 'strike', 'vanish', 'webHidden', ): setattr(self, p, binary_property(rPr, p, X, g)) read_font(rPr, self, X, g) read_font_cs(rPr, self, X, g) read_text_border(rPr, self, X, g) read_color(rPr, self, X, g) read_highlight(rPr, self, X, g) read_shd(rPr, self, X, g) read_letter_spacing(rPr, self, X, g) read_underline(rPr, self, X, g) read_vert_align(rPr, self, X, g) read_position(rPr, self, X, g) read_lang(rPr, self, X, g) for s in X('./w:rStyle[@w:val]')(rPr): self.linked_style = g(s, 'w:val') self._css = None
def __init__(self, rPr=None): self.linked_style = None if rPr is None: for p in self.all_properties: setattr(self, p, inherit) else: for p in ( 'b', 'bCs', 'caps', 'cs', 'dstrike', 'emboss', 'i', 'iCs', 'imprint', 'rtl', 'shadow', 'smallCaps', 'strike', 'vanish', 'webHidden', ): setattr(self, p, binary_property(rPr, p)) for x in ('text_border', 'color', 'highlight', 'shd', 'letter_spacing', 'sz', 'underline', 'vert_align', 'lang', 'font_family'): f = globals()['read_%s' % x] f(rPr, self) for s in XPath('./w:rStyle[@w:val]')(rPr): self.linked_style = get(s, 'w:val') self._css = None
def __init__(self, elem, embed_relationships, XPath, get): self.name = self.family_name = get(elem, 'w:name') self.alt_names = tuple(get(x, 'w:val') for x in XPath('./w:altName')(elem)) if self.alt_names and not has_system_fonts(self.name): for x in self.alt_names: if has_system_fonts(x): self.family_name = x break self.embedded = {} for x in ('Regular', 'Bold', 'Italic', 'BoldItalic'): for y in XPath('./w:embed%s[@r:id]' % x)(elem): rid = get(y, 'r:id') key = get(y, 'w:fontKey') subsetted = get(y, 'w:subsetted') in {'1', 'true', 'on'} if rid in embed_relationships: self.embedded[x] = Embed(embed_relationships[rid], key, subsetted) self.generic_family = 'auto' for x in XPath('./w:family[@w:val]')(elem): self.generic_family = get(x, 'w:val', 'auto') ntt = binary_property(elem, 'notTrueType', XPath, get) self.is_ttf = ntt is inherit or not ntt self.panose1 = None self.panose_name = None for x in XPath('./w:panose1[@w:val]')(elem): try: v = get(x, 'w:val') v = tuple(int(v[i:i+2], 16) for i in xrange(0, len(v), 2)) except (TypeError, ValueError, IndexError): pass else: self.panose1 = v self.panose_name = panose_to_css_generic_family(v) self.css_generic_family = {'roman':'serif', 'swiss':'sans-serif', 'modern':'monospace', 'decorative':'fantasy', 'script':'cursive'}.get(self.generic_family, None) self.css_generic_family = self.css_generic_family or self.panose_name or 'serif'