web-dev-qa-db-ja.com

SeleniumWebdriverスクリーンショットを使用してPDF

Selenium FirefoxWebDriverのスクリーンショット機能を使用してHTMLをPDFにエクスポートできるかどうか誰か知っていますか?自動的にダウンロードする必要がある特定のcssを印刷するWebページがあります。スクリーンショットを理解しています機能はページのスクリーンショットを画像として取得しますが、印刷に適したスケーラブルなPDFファイルを探していました。

7
user1038814

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ファイルに画像を設定する方法を確認する必要があります。

6
makeMonday

すばやく簡単な方法は、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()
1
Florent B.

Webdriverは「PDFとしてエクスポート」機能をサポートしていません。

FirefoxとWebdriverに縛られていない場合は、phantomjsが代わりになる可能性があります。 Phantomjsは、スクリーンショットをPDFとして取得する機能を備えたヘッドレスブラウザです。ブラウザはjavascriptで直接制御できます。

例: http://phantomjs.org/screen-capture.html

1
powerpete