Jeremy Singer-Vine 663b3dc328 Fix README lists
2015-12-15 11:47:38 -05:00
2015-08-23 23:14:33 -04:00
2015-08-23 23:14:33 -04:00
2015-12-15 11:47:38 -05:00
2015-12-15 11:40:14 -05:00
2015-12-15 11:40:14 -05:00

WARNING: This software is in its very early days, might not work well, and might change dramatically in future versions.

PDFPlumber

Plumb a PDF for detailed information about each text character, rectangle, line, and image.

Built on pdfminer and pdfminer.six.

Installation

pip install pdfplumber

Usage

Basic Example

import pdfplumber

pdf = pdfplumber.from_path("path/to/file.pdf")

# OR

with open("path/to/file.pdf") as f:
    pdf = pdfplumber.load(f)

if len(pdf.chars):
    print(pdf.chars[0])

if len(pdf.rects):
    print(pdf.rects[0])

if len(pdf.lines):
    print(pdf.lines[0])

Loading a PDF

pdfplumber provides two main ways to load a PDF:

  • pdfplumber.load(file_like_object)
  • pdfplumber.from_path("path/to/file.pdf")

Both methods return an instance of the pdfplumber.PDF class.

Objects

Each instance of pdfplumber.PDF provides access to six types of PDF objects. The following properties each return a Python list of the matching objects:

  • .chars, each representing a single text character.
  • .annos, each representing a single annotation-text character.
  • .lines, each representing a single 1-dimensional line.
  • .rects, each representing a single 2-dimensional rectangle.
  • .images, each representing a single image.
  • .figures, each representing a single figure.

Object Properties

Each object is represented as a simple Python dict, with the following properties:

  • char / anno:

    • pageid: Page ID on which this character was found.
    • text: E.g., "z", or "Z" or " ".
    • fontname: Name of the character's font face.
    • size: Font size.
    • adv: Equal to text width * the font size * scaling factor.
    • upright: Whether the character is upright.
    • height: Height of the character.
    • width: Width of the character.
    • x0: Distance of left side of character from left side of page.
    • x1: Distance of right side of character from left side of page.
    • y0: Distance of bottom of character from bottom of page.
    • y1: Distance of top of character from bottom of page.
    • top: Distance of top of character from top of page.
    • doctop: Distance of top of character from top of document.
    • kind: "LTChar" / "LTAnno"
  • line:

    • pageid: Page ID on which this line was found.
    • height: Height of line.
    • width: Width of line.
    • x0: Distance of left-side extremity from left side of page.
    • x1: Distance of right-side extremity from left side of page.
    • y0: Distance of bottom extremity from bottom of page.
    • y1: Distance of top extremity bottom of page.
    • top: Distance of top of line from top of page.
    • doctop: Distance of top of line from top of document.
    • linewidth: Thickness of line.
    • kind: "LTLine"
  • rect:

    • pageid: Page ID on which this rectangle was found.
    • height: Height of rectangle.
    • width: Width of rectangle.
    • x0: Distance of left side of rectangle from left side of page.
    • x1: Distance of right side of rectangle from left side of page.
    • y0: Distance of bottom of rectangle from bottom of page.
    • y1: Distance of top of rectangle from bottom of page.
    • top: Distance of top of rectangle from top of page.
    • doctop: Distance of top of rectangle from top of document.
    • linewidth: Thickness of line.
    • kind: "LTRect"
  • image: TK

  • figure: TK

Python Support

Support for Python 3 is rough around the edges and largely dependent on the progress of pdfminer.six.

Feedback

Issues and pull requests welcome.

S
Description
No description provided
Readme 24 MiB
Languages
Python 99.7%
Makefile 0.3%