| import gradio as gr |
| from selenium import webdriver |
| from selenium.webdriver.chrome.options import Options |
| from selenium.webdriver.common.by import By |
| from selenium.webdriver.support.ui import WebDriverWait |
| from selenium.webdriver.support import expected_conditions as EC |
| from PIL import Image |
| from io import BytesIO |
| import tempfile |
| import time |
| import os |
|
|
| def render_fullpage_screenshot_with_margin(html_code): |
| |
| tmp_file = tempfile.NamedTemporaryFile(suffix=".html", delete=False) |
| tmp_path = tmp_file.name |
| tmp_file.write(html_code.encode('utf-8')) |
| tmp_file.close() |
|
|
| |
| options = Options() |
| options.add_argument("--headless") |
| options.add_argument("--no-sandbox") |
| options.add_argument("--disable-dev-shm-usage") |
| options.add_argument("--force-device-scale-factor=1") |
|
|
| try: |
| driver = webdriver.Chrome(options=options) |
|
|
| |
| driver.set_window_size(1200, 800) |
| driver.get("file://" + tmp_path) |
|
|
| |
| WebDriverWait(driver, 10).until( |
| EC.presence_of_element_located((By.TAG_NAME, "body")) |
| ) |
| time.sleep(2) |
|
|
| |
| driver.execute_script(""" |
| document.documentElement.style.overflow = 'hidden'; |
| document.body.style.overflow = 'hidden'; |
| document.documentElement.style.backgroundColor = 'white'; |
| document.body.style.backgroundColor = 'white'; |
| """) |
|
|
| |
| scroll_width = driver.execute_script( |
| "return Math.max(document.body.scrollWidth, document.documentElement.scrollWidth)" |
| ) |
| scroll_height = driver.execute_script( |
| "return Math.max(document.body |
| |