def _set_properties(self): self._set_align() self.xml = self.xml.replace('{properties}', ''.join(self.xml_props)) image_pil = PILImage.open(self.image.name) width = Unit.pixel_to_emu(image_pil.size[0]) height = Unit.pixel_to_emu(image_pil.size[1]) width_percentage_num = float(self.width[:-1]) height_percentage_num = float(self.height[:-1]) width = (width_percentage_num / 100) * width height = (height_percentage_num / 100) * height self.xml = self.xml.replace("{width}", str(int(width))) \ .replace("{height}", str(int(height))) \ .replace("{image_name}", self.image_name)
def _set_padding(self): if type(self.padding) in [str, unicode]: sizes = self.padding.split(' ') if len(sizes) == 1: top = bottom = left = right = sizes[0] elif len(sizes) == 2: top = bottom = sizes[0] left = right = sizes[1] elif len(sizes) == 3: top = sizes[0] right = left = sizes[1] bottom = sizes[2] elif len(sizes) == 4: top = sizes[0] right = sizes[1] bottom = sizes[2] left = sizes[3] else: raise InvalidCellPaddingException("Table Padding should be " + "in the W3C CSS format") top = Unit.to_dxa(top) bottom = Unit.to_dxa(bottom) right = Unit.to_dxa(right) left = Unit.to_dxa(left) xml = '\n<w:tblCellMar>' + \ '<w:top w:w="{top}" w:type="dxa" />' + \ '<w:left w:w="{left}" w:type="dxa" />' + \ '<w:bottom w:w="{bottom}" w:type="dxa" />' + \ '<w:right w:w="{right}" w:type="dxa" />' + \ '</w:tblCellMar>\n' self.xml_props.append(xml.format(top=top, bottom=bottom, right=right, left=left))
def _set_width(self): if self.width: xml = '\n<w:tcW w:type="{unit_type}" w:w="{width}"/>\n' if self.width[-1:] == '%': unit_type = 'pct' width = int(self.width[:-1]) if width <= 100 and width > 0: width = width * 50 xml = xml.format(unit_type=unit_type, width=width) else: return elif self.width[-2:] in ['cm', 'pt', 'in']: unit_type = 'dxa' width = Unit.to_dxa(self.width) xml = xml.format(unit_type=unit_type, width=width) self.xml_props.append(xml)