Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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))
Ejemplo n.º 3
0
    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)