zoukankan      html  css  js  c++  java
  • Take webpage screenshot from command line in Ubuntu Linux | Binary Tides

    Take webpage screenshot from command line in Ubuntu Linux | Binary Tides

    There are many instances when you want to take the screenshot of a webpage from within a php script or the command line. On ubuntu there are several ways to do it and most of them produce a webkit , gecko or khtml rendered screenshot image.

    Some of the methods require X session to open a window and take screenshots. So VNC can be used to run in on servers for example. To Setup a VNC server on Ubuntu read this article.

    1. wkhtmltopdf

    Url :

    http://code.google.com/p/wkhtmltopdf/

    wkhtmltopdf is a command line utility that converts html to pdf using webkit rendering engine.

    Install :

    sudo apt-get install wkhtmltopdf

    Usage :

    1$ wkhtmltopdf www.google.com google.pdf
    2Loading page (1/2)
    3Printing pages (2/2)
    4Done

    Now the google.pdf file should be there in your home directory.

    2. wkhtmltoimage

    Url :

    http://code.google.com/p/wkhtmltopdf/

    Docs :

    http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltoimage_0.10.0_rc2-doc.html

    It uses the webkit rendering engine.

    Download from : http://code.google.com/p/wkhtmltopdf/downloads/list

    Extract the archive.

    Usage :

    1$ ./wkhtmltoimage-amd64 http://www.google.com google.png

    It should create google.png in home directory with the screenshot of www.google.com

    Other options :

    Quality – Controls the quality/compression of the generation image. Default is 94

    1$ ./wkhtmltoimage-amd64 --quality 50 http://www.google.com google.png

    Disable images

    1$ ./wkhtmltoimage-amd64 --no-images http://www.google.com google.png

    Disable javascript

    1$ ./wkhtmltoimage-amd64 --disable-javascript http://www.google.com google.png

    Crop the screenshot

    1$ ./wkhtmltoimage-amd64 --crop-h 300 --crop-w 300 --crop-x 0 --crop-y 0 http://www.google.com google.png

    Advantages :

    1. Can automatically determine the height of the page to take full page screenshots unlike most other utilities.

    Disadvantages :

    1. Fails many times due to unknown reasons with an error saying “Painter not active”.

    2. Cannot render cufon fonts and flash animations. Sometimes it even fails in jquery animations which take long time to load.

    3. cutycapt

    Url :

    http://cutycapt.sourceforge.net/

    Install :

    sudo apt-get install subversion libqt4-webkit libqt4-dev g++ cutycapt

    Usage :

    1$ cutycapt --url=http://www.google.com/ --out=google.png

    It should create a google.png file in home directory which would have the screenshot of www.google.com

    3. khtml2png

    khtml2png uses the konqueror rendering engine to create screenshots of web pages.

    Download : http://khtml2png.sourceforge.net/index.php?page=download

    Install :

    1. sudo apt-get install kdelibs4-dev zlib1g-dev g++ cmake

    2. Extract the khtml2png archive.

    3. ./configure

    4. make

    5. sudo checkinstall (this will create a deb file and install it , so that it can easily uninstalled later).

    Usage :

    1$ khtml2png2 --width 800 --height 600 http://www.google.com/ google.png
    2kbuildsycoca running...
    3DCOP Cleaning up dead connections.

    This would create a google.png in home directory with the screenshot of www.google.com.

    This method requires a running X session. To run it from VNC use as :

    Start vnc server :

    1$ vncserver :12
    2New 'enlightened-desktop:12 (enlightened)' desktop is enlightened-desktop:12
    3Starting applications specified in /home/enlightened/.vnc/xstartup
    4Log file is /home/enlightened/.vnc/enlightened-desktop:12.log

    Run the program in the vnc server :

    1$ DISPLAY=:12 khtml2png2 --width 1024 --height 768 http://www.google.com/ google.png
    2Xlib:  extension "XInputExtension" missing on display ":12".
    3Failed to get list of devices
    4Xlib:  extension "XInputExtension" missing on display ":12".
    5Failed to get list of devices
    6kbuildsycoca running...

    Use with xvfb :

    1$ xvfb-run --server-args="-screen 0, 1024x768x24" khtml2png2 --width 800 --height 600 http://www.google.com/ google.png

    4. PyWebShot

    Url :

    http://www.coderholic.com/pywebshot-generate-website-thumbnails-using-python/

    https://github.com/coderholic/PyWebShot

    Pywebshot uses python bindings embedded mozilla ( http://www.mozilla.org/unix/gtk-embedding.html )

    Install :

    1. sudo apt-get install python-gtkmozembed

    2. Download pywebshot from https://github.com/coderholic/PyWebShot

    Usage :

    1$ python pywebshot.py www.google.com -t 1024x768&lt;br /&gt;<br />Loading www.google.com... saved as www.google.com.png

    It should create a www.google.com.png in the directory which has the screenshot of size 1024 x 768.

    This method requires a running X session , since it opens a window to load the url and then save its screenshot.

    So VNC can be used like this :

    start vnc server :

    1$ vncserver :12
    2New 'enlightened-desktop:12 (enlightened)' desktop is enlightened-desktop:12
    3Starting applications specified in /home/enlightened/.vnc/xstartup
    4Log file is /home/enlightened/.vnc/enlightened-desktop:12.log

    Run pywebshot :

    1$ DISPLAY=:12 python pywebshot.py www.google.com -t 1024x768
    2Loading www.google.com... saved as www.google.com.png

    Advantages

    1. Can succesfully render cufon fonts, complex/long loading jquery animations.

    Disadvantages

    1. Cannot automatically determine page height to take full page screenshot.

    Workaround: If dimensions are available then the dimensions can be specified as the screensize and using such parameters with a virtual monitor can give full page screenshots.

    2. Opens up an annoying browers every time on the desktop.

    Workaround: Use xvfb.

    5. python-webkit2png

    Url :

    1. http://www.blogs.uni-osnabrueck.de/rotapken/2008/12/03/create-screenshots-of-a-web-page-using-python-and-qtwebkit/

    2. https://github.com/AdamN/python-webkit2png/

    Install :

    1. sudo apt-get install python-qt4 libqt4-webkit

    2. Download package from github and extract the archive.

    Usage :

    1$ python webkit2png.py -o google.png http://www.google.com/

    It should create a google.png file in the directory with the screenshot of www.google.com

    Use with xvfb :

    On a webserver since Xorg is not running , xvfb can bed used to take the screenshot.

    1$ xvfb-run --server-args="-screen 0, 1024x768x24" python webkit2png.py -o google.png http://www.google.com/

    Advantages

    1. Can succesfully render cufon fonts, complex/long loading jquery animations.

    Disadvantages

    1. Fails at CSS3 fonts.

    2. Cannot automatically determine page height to take full page screenshot.

    Workaround: If dimensions are available then the dimensions can be specified as the screensize and using such parameters with a virtual monitor can give full page screenshots

    3. Opens up an annoying browers every time on the desktop

    Workaround: Use xvfb,vnc.

    The above tools and techniques can be used on a webserver with a language like PHP.

  • 相关阅读:
    深入浅出AQS之组件概览
    深入浅出AQS之条件队列
    深入浅出AQS之共享锁模式
    深入浅出AQS之独占锁模式
    Android中RecyclerView用法,一步一步教你如何使用RecyclerView以及带你走过编码中可能会出现的坑~
    检测jquery是否正确引入
    对于使用JDBC连接mysql数据时The server time zone value '¤¤°ê¼Ð·Ç®É¶¡'...的异常问题解决。
    MYSQL8.0以上版本ROOT密码报错及修改
    MYSQL安装教程
    linux centos安装nginx1.7.4
  • 原文地址:https://www.cnblogs.com/lexus/p/2464599.html
Copyright © 2011-2022 走看看