只是想知道这里是否有错误。
在 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”是否只是在后续处理中添加(如果不存在)?还是应该包括单位?(在这种情况下,分号终止符将/可能需要额外考虑。)