0

只是想知道这里是否有错误。

在 frappe/utils/pdf.py 中:

def read_options_from_html(html):
        options = {}
        soup = BeautifulSoup(html, "html5lib")

        options.update(prepare_header_footer(soup))

        toggle_visible_pdf(soup)

        # use regex instead of soup-parser
        for attr in ("margin-top", "margin-bottom", "margin-left", "margin-right", "page-size", "header-spacing", "orientation"):
                try:
                        pattern = re.compile(r"(\.print-format)([\S|\s][^}]*?)(" + str(attr) + r":)(.+)(mm;)")
                        match = pattern.findall(html)
                        if match:
                                options[attr] = str(match[-1][3]).strip()
                except:
                        pass

        return str(soup), options

匹配模式配置是
(<class-name>)(<unrelated>)(<attribute-name>:)(<value>)('mm;')

如果找到匹配项,<value>则提取部分 ( match[3]),这只是没有“mm”后缀的数字部分。

margin-{right|left|top|bottom}但是,我们看到为in设置的默认值并设置为def prepare_options()包含def prepare_header_footer()“mm”单位后缀的值,例如:options["margin-top"] = "15mm"

我不够熟悉,不知道“mm”是否只是在后续处理中添加(如果不存在)?还是应该包括单位?(在这种情况下,分号终止符将/可能需要额外考虑。)

4

0 回答 0