All Projects → jarrekk → Imgkit

jarrekk / Imgkit

Licence: mit
🌁 Wkhtmltoimage python wrapper to convert HTML to image

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Imgkit

Scfacebook
The SCFacebook 4.1 is a simple and cleaner to use the api facebook-ios-sdk Objective-C Wrapper (https://github.com/facebook/facebook-ios-sdk) to perform login, get friends list, information about the user and posting on the wall with ^Block for iPhone. Suporte 4.71 FBSDKCoreKit, FBSDKShareKit and FBSDKLoginKit. Facebook SDK
Stars: ✭ 420 (-32.26%)
Mutual labels:  wrapper
Flapigen Rs
Tool for connecting programs or libraries written in Rust with other languages
Stars: ✭ 473 (-23.71%)
Mutual labels:  wrapper
Python Poloniex
Poloniex API wrapper for Python 2.7 & 3
Stars: ✭ 557 (-10.16%)
Mutual labels:  wrapper
Globjects
C++ library strictly wrapping OpenGL objects.
Stars: ✭ 431 (-30.48%)
Mutual labels:  wrapper
Seq2seqchatbots
A wrapper around tensor2tensor to flexibly train, interact, and generate data for neural chatbots.
Stars: ✭ 466 (-24.84%)
Mutual labels:  wrapper
Materialdrawerkt
A Kotlin DSL wrapper around the mikepenz/MaterialDrawer library.
Stars: ✭ 508 (-18.06%)
Mutual labels:  wrapper
Go Dotnet
Go wrapper for the .NET Core Runtime.
Stars: ✭ 369 (-40.48%)
Mutual labels:  wrapper
Ruby Tesseract Ocr
A Ruby wrapper library to the tesseract-ocr API.
Stars: ✭ 601 (-3.06%)
Mutual labels:  wrapper
Goffmpeg
FFMPEG wrapper written in GO
Stars: ✭ 469 (-24.35%)
Mutual labels:  wrapper
Qtsharp
Mono/.NET bindings for Qt
Stars: ✭ 532 (-14.19%)
Mutual labels:  wrapper
Docker Aosp
🏗 Minimal Android AOSP build environment with handy automation wrapper scripts
Stars: ✭ 440 (-29.03%)
Mutual labels:  wrapper
Dxwrapper
Fixes compatibility issues with older games running on Windows 10 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game processes.
Stars: ✭ 460 (-25.81%)
Mutual labels:  wrapper
Rxfirebase
Rxjava 2.0 wrapper on Google's Android Firebase library.
Stars: ✭ 509 (-17.9%)
Mutual labels:  wrapper
Jsstore
A complete IndexedDB wrapper with SQL like syntax.
Stars: ✭ 430 (-30.65%)
Mutual labels:  wrapper
Atlassian Python Api
Atlassian Python REST API wrapper
Stars: ✭ 564 (-9.03%)
Mutual labels:  wrapper
Aspect Injector
AOP framework for .NET (c#, vb, etc)
Stars: ✭ 398 (-35.81%)
Mutual labels:  wrapper
Imgui Go
Go wrapper library for "Dear ImGui" (https://github.com/ocornut/imgui)
Stars: ✭ 499 (-19.52%)
Mutual labels:  wrapper
Ofxcv
Alternative approach to interfacing with OpenCv from openFrameworks.
Stars: ✭ 614 (-0.97%)
Mutual labels:  wrapper
Highcharter
R wrapper for highcharts
Stars: ✭ 583 (-5.97%)
Mutual labels:  wrapper
Tcconfig
A tc command wrapper. Make it easy to set up traffic control of network bandwidth/latency/packet-loss/packet-corruption/etc. to a network-interface/Docker-container(veth).
Stars: ✭ 510 (-17.74%)
Mutual labels:  wrapper

IMGKit: Python library of HTML to IMG wrapper

Build Status codecov Codacy Badge PyPI version

  _____   __  __    _____   _  __  _   _
 |_   _| |  \/  |  / ____| | |/ / (_) | |
   | |   | \  / | | |  __  | ' /   _  | |_
   | |   | |\/| | | | |_ | |  <   | | | __|
  _| |_  | |  | | | |__| | | . \  | | | |_
 |_____| |_|  |_|  \_____| |_|\_\ |_|  \__|

Python 2 and 3 wrapper for wkhtmltoimage utility to convert HTML to IMG using Webkit.

Installation

  1. Install imgkit:

    pip install imgkit
    
  2. Install wkhtmltopdf:

    • Debian/Ubuntu:

      sudo apt-get install wkhtmltopdf
      

      Warning! Version in debian/ubuntu repos have reduced functionality (because it compiled without the wkhtmltopdf QT patches), such as adding outlines, headers, footers, TOC etc. To use this options you should install static binary from wkhtmltopdf site or you can use this script.

    • MacOSX:

      brew install --cask wkhtmltopdf
      
    • Windows and other options:

      Check wkhtmltopdf homepage for binary installers or wiki page.

Usage

Simple example:

import imgkit

imgkit.from_url('http://google.com', 'out.jpg')
imgkit.from_file('test.html', 'out.jpg')
imgkit.from_string('Hello!', 'out.jpg')

Also you can pass an opened file:

with open('file.html') as f:
    imgkit.from_file(f, 'out.jpg')

If you wish to further process generated IMG, you can read it to a variable:

# Use False instead of output path to save pdf to a variable
img = imgkit.from_url('http://google.com', False)

You can find all wkhtmltoimage options by type wkhtmltoimage command or visit this Manual. You can drop '--' in option name. If option without value, use None, False or '' for dict value:. For repeatable options (incl. allow, cookie, custom-header, post, postfile, run-script, replace) you may use a list or a tuple. With option that need multiple values (e.g. --custom-header Authorization secret) we may use a 2-tuple (see example below).

options = {
    'format': 'png',
    'crop-h': '3',
    'crop-w': '3',
    'crop-x': '3',
    'crop-y': '3',
    'encoding': "UTF-8",
    'custom-header' : [
        ('Accept-Encoding', 'gzip')
    ]
    'cookie': [
        ('cookie-name1', 'cookie-value1'),
        ('cookie-name2', 'cookie-value2'),
    ],
    'no-outline': None
}

imgkit.from_url('http://google.com', 'out.png', options=options)

At some headless servers, perhaps you need to install xvfb:

# at ubuntu server, etc.
sudo apt-get install xvfb
# at centos server, etc.
yum install xorg-x11-server-Xvfb

Then use IMGKit with option xvfb: {"xvfb": ""}.

By default, IMGKit will show all wkhtmltoimage output. If you don't want it, you need to pass quiet option:

options = {
    'quiet': ''
    }

imgkit.from_url('google.com', 'out.jpg', options=options)

Due to wkhtmltoimage command syntax, TOC and Cover options must be specified separately. If you need cover before TOC, use cover_first option:

toc = {
    'xsl-style-sheet': 'toc.xsl'
}

cover = 'cover.html'

imgkit.from_file('file.html', options=options, toc=toc, cover=cover)
imgkit.from_file('file.html', options=options, toc=toc, cover=cover, cover_first=True)

You can specify external CSS files when converting files or strings using css option.

# Single CSS file
css = 'example.css'
imgkit.from_file('file.html', options=options, css=css)

# Multiple CSS files
css = ['example.css', 'example2.css']
imgkit.from_file('file.html', options=options, css=css)

You can also pass any options through meta tags in your HTML:

body = """
<html>
  <head>
    <meta name="imgkit-format" content="png"/>
    <meta name="imgkit-orientation" content="Landscape"/>
  </head>
  Hello World!
  </html>
"""

imgkit.from_string(body, 'out.png')

Configuration

Each API call takes an optional config paramater. This should be an instance of imgkit.config() API call. It takes the config options as initial paramaters. The available options are:

  • wkhtmltoimage - the location of the wkhtmltoimage binary. By default imgkit will attempt to locate this using which(on UNIX type systems) or where (on Windows).
  • xvfb - the location of the xvfb-run binary. By default imgkit will attempt to locate this using which(on UNIX type systems) or where (on Windows).
  • meta_tag_prefix - the prefix for imgkit specific meta tags - by default this is imgkit-

Example - for when wkhtmltopdf or xvfb is not in $PATH:

config = imgkit.config(wkhtmltoimage='/opt/bin/wkhtmltoimage', xvfb='/opt/bin/xvfb-run')
imgkit.from_string(html_string, output_file, config=config)

Troubleshooting

  • IOError: 'No wkhtmltopdf executable found':

    Make sure that you have wkhtmltoimage in your $PATH or set via custom configuration (see preceding section). where wkhtmltoimage in Windows or which wkhtmltoimage on Linux should return actual path to binary.

  • IOError: 'No xvfb executable found':

    Make sure that you have xvfb-run in your $PATH or set via custom configuration (see preceding section). where xvfb in Windows or which xvfb-run or which Xvfb on Linux should return actual path to binary.

  • IOError: 'Command Failed':

    This error means that IMGKit was unable to process an input. You can try to directly run a command from error message and see what error caused failure (on some wkhtmltoimage versions this can be cause by segmentation faults)

Credit

python PDFKit

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].