目前,我看到可以使用Selenium创建屏幕截图。但是,它们始终是.png
文件。我怎么能采取相同的风格截图,但作为.pdf
?
所需样式:无边距;与当前页面尺寸相同(如整页截图)
打印页面并不能完成这一点,因为打印附带的所有格式。
我目前如何获得屏幕截图:
from selenium import webdriver
# Function to find page size
S = lambda X: driver.execute_script('return document.body.parentNode.scroll'+X)
driver = webdriver.Firefox(options=options)
driver.get('https://www.google.com')
# Screen
height = S('Height')
width = S('Width')
driver.set_window_size(width, height)
driver.get_screenshot_as_file(PNG_SAVEAS)
driver.close()
2条答案
按热度按时间hxzsmxv21#
试试这个:
这段代码将整页屏幕截图捕获为PNG文件,然后将其转换为PDF文件。将文件路径(png_file_path和pdf_file_path)调整到所需的位置以保存文件。
2ekbmq322#
为了达到预期的效果,我找到了一个其他地方不容易找到的解决方案。
关键是动态配置PDF页面的宽度和高度,以匹配正在打印的内容。此外,我发现将结果缩小到仅为原始大小的1%可以显著加快该过程。
需要注意的一点是,在使用GeckoDriver时,我遇到了一个bug(reference),导致生成的PDF打印出错误的大小。但是,我发现将大小乘以
2.5352112676056335
解决了这个问题。我仍然不清楚为什么这个特定的常数与我的答案相关,但是如果不应用这个修复程序,PDF的纵横比就会失真(而不是按比例缩小到其所需大小的39%)。失真导致多页.pdf文件,这不是预期的结果。这个方法是用GeckoDriver测试的。如果您使用的是Chrome,则可能不需要
RATIO_MULTIPLIER
解决方案。使用的版本: