请问有人知道是否可以使用Selenium Firefox WebDriver中的截屏功能将HTML导出为PDF吗? 我有一个具有打印特定CSS的网页,我需要自动下载它。 我知道截屏功能将页面截取为图像,但我正在寻找可伸缩的适合打印的PDF文件。
请问有人知道是否可以使用Selenium Firefox WebDriver中的截屏功能将HTML导出为PDF吗? 我有一个具有打印特定CSS的网页,我需要自动下载它。 我知道截屏功能将页面截取为图像,但我正在寻找可伸缩的适合打印的PDF文件。
Selenium中的屏幕截图是以PNG格式保存的,而PNG和PDF是不同类型的格式。因此,Selenium无法直接将您的HTML页面图像保存为PDF。
但您可以尝试插入Selenium获取的PNG屏幕截图,并将其添加到PDF中。
请参考此答案。基本上,您需要一个库(例如itext),并执行以下操作:
// Take screenshot
driver.get("http://www.yourwebpage.com");
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File("screenshot.png"));
// Create the PDF
Document document = new Document(PageSize.A4, 20, 20, 20, 20);
PdfWriter.getInstance(document, new FileOutputStream("my_web.pdf"));
document.open();
Image image = Image.getInstance(getClass().getResource("screenshot.png"));
document.add(image);
document.close();
希望这能有所帮助!
由于网页可能很高,您可能需要查看文档以了解如何在PDF文件中设置图像。
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.google.co.uk");
# open new file
file = open(r"C:\temp\captures.html", "w")
file.write("<!DOCTYPE html><html><head></head><body width=\"600px\">")
# write image
file.write("<img src=\"data:image/png;base64,")
file.write(driver.get_screenshot_as_base64())
file.write("\">")
# close file
file.write("</body></html>")
file.close()
driver.quit()
Webdriver不支持"导出为PDF"功能。
当您不受Firefox和Webdriver限制时,phantomjs可能是一种替代方案。 Phantomjs是一个无头浏览器,具有将屏幕截图保存为PDF的能力。 该浏览器可以直接通过JavaScript进行控制。