Need help with pdf-toolbox?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Yuras
146 Stars 19 Forks 231 Commits 12 Opened issues

Description

A collection of tools for processing PDF files in Haskell

Services available

!
?

Need anything else?

Contributors list

# 239,660
Haskell
Shell
Redis
datasto...
223 commits
# 113,588
Haskell
Shell
mpd
elastic...
1 commit
# 355,323
Haskell
Vue.js
React
Webpack
1 commit
# 80,437
Haskell
ghcjs
functio...
Shell
1 commit

pdf-toolbox

Build Status

A collection of tools for processing PDF files

Stable and HEAD

See "stable" branch for Hackage version. The current "master" branch is in a middle of API rewrite, see here for details.

Features

  • Written in Haskell
  • Parsing on demand. You don't need to parse or load into memory the entire PDF file just to extract one image
  • Different levels of abstraction. You can inspect high level (catalog, page tree, pages) or low level (xref, trailer, object) structure of PDF file. You can even switch between levels of details on the fly.
  • Extremely fast and memory efficient when you need to inspect only part of the document
  • Resonably fast and memory efficient in general case
  • Text extraction with exact glyph positions (mostly works, but in progress yet). It can be used e.g. to implement text selection and copying in pdf viewer
  • Full support of xref streams and object streams
  • Supports editing of PDF files (incremental updates)
  • Basic support for PDF file generating
  • Encrypted PDF documents are partially supported

Still in TODO list

  • Linearized PDF files
  • Content stream tools: extract text, images, etc (basic implementation is already included)
  • Higher level API for incremental updates and PDF generating

Examples

(Also see

examples
and
viewer
directories)

Inspect high level structure:

import Pdf.Document

main = withPdfFile "input.pdf" $ \pdf -> encrypted

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.