packages feed

pdftotext-0.1.0.0: README.md

# pdftotext

The `pdftotext` package provides functions for extraction of plain text from PDF documents. It uses C++ library [Poppler](https://poppler.freedesktop.org/), which is required to be installed in the system. Output of Haskell `pdftotext` library is identical to output of Poppler's tool `pdftotext`.

## Usage

```haskell
import qualified Data.Text.IO as T
import Pdftotext

main :: IO ()
main = do
  Just pdf <- openFile "path/to/file.pdf"
  T.putStrLn $ pdftotext Physical pdf
```

## Executable

`pdftotext` comes with executable program `pdftotext.hs` which can print text extracted from PDF and basic information from the document.

```shell
$> pdftotext.hs info test/simple.pdf
File      : test/simple.pdf
Pages     : 4
Properties
  Title   : Simple document for testing
  Author  : G. Eyaeb
  Subject : Testing
  Creator : pdflatex
  Producer: LaTeX with hyperref
  Keywords: haskell,pdf
```

```shell
$> pdftotext.hs text --pages 1,4 test/simple.pdf
Simple document for testing

                  deserve neither
liberty nor safety.
```

See help for more information:

```shell
$> pdftotext.hs --help
$> pdftotext.hs text --help
$> pdftotext.hs info --help
```

## Internals

The library uses poppler via FFI, therefore internally all functions are of type `IO`. However, their non-`IO` variants (using `unsafePerformIO`) _should be_ safe to use. Module `Pdftotext.Internal` exposes all `IO`-typed functions.

## Contribute

Project is hosted at https://sr.ht/~geyaeb/haskell-pdftotext/ . The homepage provides links to [Mercurial repository](https://hg.sr.ht/~geyaeb/haskell-pdftotext), [mailing list](https://lists.sr.ht/~geyaeb/haskell-pdftotext) and [ticket tracker](https://todo.sr.ht/~geyaeb/haskell-pdftotext).

Patches, suggestions, questions and general discussions can be send to the [mailing list](https://lists.sr.ht/~geyaeb/haskell-pdftotext). Detailed information about sending patches by email can be found at [https://man.sr.ht/hg.sr.ht/email.md](https://man.sr.ht/hg.sr.ht/email.md).