[PYTHON] Python + Selenium + PhantomJS에서 PDF로 렌더링
PYTHONPython + Selenium + PhantomJS에서 PDF로 렌더링
PhantomJS가 Selenium과 Python과 함께 사용될 때 PDF 기능에 PhantomJS 렌더링을 사용할 수 있습니까? (즉, Selenium을 통해 Python 내에서 page.render ( 'file.pdf') 동작을 모방합니다.
나는 이것이 GhostDriver를 사용하고 GhostDriver가 실제로 인쇄 방법을 많이 지원하지 않는다는 것을 알고 있습니다.
Selenium이 아닌 또 다른 대안이 가능하다면, 나는 모두 귀입니다.
해결법
-
==============================
1.GhostDriver 용 셀렌과 특수 명령을 사용하는 솔루션입니다. (GhostDriver 1.1.0 및 PhantomJS 1.9.6부터 작동해야 PhantomJS 1.9.8로 테스트 됨) :
GhostDriver 용 셀렌과 특수 명령을 사용하는 솔루션입니다. (GhostDriver 1.1.0 및 PhantomJS 1.9.6부터 작동해야 PhantomJS 1.9.8로 테스트 됨) :
#!/usr/bin/env python # -*- coding: utf-8 -*- """Download a webpage as a PDF.""" from selenium import webdriver def download(driver, target_path): """Download the currently displayed page to target_path.""" def execute(script, args): driver.execute('executePhantomScript', {'script': script, 'args': args}) # hack while the python interface lags driver.command_executor._commands['executePhantomScript'] = ('POST', '/session/$sessionId/phantom/execute') # set page format # inside the execution script, webpage is "this" page_format = 'this.paperSize = {format: "A4", orientation: "portrait" };' execute(page_format, []) # render current page render = '''this.render("{}")'''.format(target_path) execute(render, []) if __name__ == '__main__': driver = webdriver.PhantomJS('phantomjs') driver.get('http://stackoverflow.com') download(driver, "save_me.pdf")
여기에 같은 질문에 대한 나의 대답을보십시오.
-
==============================
2.selenium.selenium.capture_screenshot ( 'file.png')을 사용할 수는 있지만 pdf가 아닌 png로 스크린 샷을 줄 것입니다. 스크린 샷을 pdf로 가져 오는 방법이없는 것 같습니다.
selenium.selenium.capture_screenshot ( 'file.png')을 사용할 수는 있지만 pdf가 아닌 png로 스크린 샷을 줄 것입니다. 스크린 샷을 pdf로 가져 오는 방법이없는 것 같습니다.
다음은 capture_screenshot의 문서입니다. http://selenium.googlecode.com/git/docs/api/py/selenium/selenium.selenium.html?highlight=screenshot#selenium.selenium.selenium.capture_screenshot
-
==============================
3.PDF 킷을 사용해 보시겠습니까? 그것은 HTML 페이지에서 PDF 파일을 렌더링 할 수 있습니다.
PDF 킷을 사용해 보시겠습니까? 그것은 HTML 페이지에서 PDF 파일을 렌더링 할 수 있습니다.
-
==============================
4.@rejected, 당신이 subprocesses를 사용하고 싶지 않다고 언급 한 것을 알고 있지만 ...
@rejected, 당신이 subprocesses를 사용하고 싶지 않다고 언급 한 것을 알고 있지만 ...
실제로 서브 프로세스 통신을 예상 한 것보다 많이 활용할 수 있습니다. 이론적으로, 당신은 Ariy의 stdin / stdout 예제를 취해 상대적으로 일반적인 wrapper 스크립트로 확장 할 수 있습니다. 먼저로드 할 페이지를 수락 한 다음 해당 페이지에서 테스트 액션을 수신 (& 실행) 할 수 있습니다. 결국, .render를 시작하거나 오류 처리를위한 일반적인 캡쳐를 만들 수 있습니다.
try { // load page & execute stdin commands } catch (e) { page.render(page + '-error-state.pdf'); }
from https://stackoverflow.com/questions/16927090/python-selenium-phantomjs-render-to-pdf by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 큰 문서에서 전자 메일 하위 문자열 추출 (0) | 2018.10.27 |
---|---|
[PYTHON] 어떻게 numpy 배열을 "확장"할 수 있습니까? (0) | 2018.10.27 |
[PYTHON] 사용자 정의 메트릭을 사용하여 Sklearn kNN 사용 (0) | 2018.10.27 |
[PYTHON] PANDAS의 SQL과 유사한 창 기능 : Python Pandas Dataframe의 행 번호 매기기 (0) | 2018.10.27 |
[PYTHON] 파이썬에서 크로스 플랫폼 콘솔 앱용 저주 라이브러리 (0) | 2018.10.27 |