用Selenium WebDriver进行截图,同时保持html的字体(python)。

0 人关注

我正试图用Selenium WebDriver从包含不同字体的html文件中生成图像。但当我截图时,我得到的图像总是返回相同的字体,但与html文件中的字体不同。有人知道如何处理这个问题吗?

python中的代码示例
Font in html: 草写的Parkavenue 但我们从截图中得到的图片中的字体是 Arial .

## python
html ="""
        <style>
            html{background-color: white}
            table{font-family:Parkavenue, cursive, serif;text-align:center;border-collapse:inherit; border-spacing: 0}
            td,th{width: 339px; height : 50px;border:3px dotted black;}
        </style>
    </head>
        <table>
            <tr><th rowspan="2"><span id=4>shipments % S.A. sher,AD.; common </span></th>
            <th colspan=3><span id=5>% </span></th>
            <th rowspan="2"><span id=6>.KAZG.O.,,, C AND S.A. </span></th>
            </tr><tr><th colspan=0><span id=7>WARD, S.L. </span></th>
            <th colspan=0><span id=8>Gross body Buena Contains &nbsp AT &nbsp Sciences surface </span></th></tr>
        </table>
    </body>
</html>
driver = Firefox()
driver.get("data:text/html," + html)
png = driver.get_screenshot_as_png()

图像_截图

python
selenium-webdriver
fonts
Lucky_Luf
Lucky_Luf
发布于 2020-05-13
2 个回答
orr burgel
orr burgel
发布于 2021-01-19
0 人赞同

try this:

sudo apt-get install fonts-unfonts-core
sudo apt-get install fonts-unfonts-extra
sudo apt-get update
sudo apt-get upgrade
sudo apt -f install

这为我解决了字体问题,但我仍然无法呈现一些字体,如希伯来语,所以我想这不是一个完美的解决方案。

upper
upper
发布于 2021-01-19
0 人赞同

一个可能的解释是你的设备没有安装该字体。如果是这种情况,WebDriver会用已经安装好的Arial字体加载页面。

我在Colab上运行Selenium WebDriver时遇到了类似的问题。Colab只预装了1-2种字体,所以我的Unicode语言(亚美尼亚语、格鲁吉亚语、阿拉伯语)的网站截图上出现的是方块而不是实际的字符,因为默认字体都不支持这些语言。卸载它们并安装一个自定义字体(Sylfaen)和这个片段就解决了这个问题。

!rm -r /usr/share/fonts/truetype/humor-sans
!rm -r /usr/share/fonts/truetype/liberation
!cp sylfaen.ttf /usr/share/fonts/truetype
!fc-cache -vf