Selenium FirefoxWebDriverのスクリーンショット機能を使用してHTMLをPDFにエクスポートできるかどうか誰か知っていますか?自動的にダウンロードする必要がある特定のcssを印刷するWebページがあります。スクリーンショットを理解しています機能はページのスクリーンショットを画像として取得しますが、印刷に適したスケーラブルな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();
それが役に立てば幸い!
Webはかなり高い可能性があるため、おそらく ドキュメント をチェックして、PDFファイルに画像を設定する方法を確認する必要があります。
すばやく簡単な方法は、HTMLファイルを作成し、画像をbase64データとして埋め込むことです。その後、任意のコンバーターを使用して、ドキュメントをPDFとして取得できます。
Pythonの例:
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で直接制御できます。