#poppler #convert-images #image #pdf #image-encoding #encoding #pdf2img #pdf-image-conversion

pdf2image

A simplified port of Python's pdf2image that wraps pdftoppm and pdftocairo to convert PDFs into images

4 releases

0.1.3 Feb 9, 2025
0.1.2 May 7, 2024
0.1.1 May 7, 2024
0.1.0 May 7, 2024

#255 in Images

Download history 106/week @ 2024-12-17 45/week @ 2024-12-24 73/week @ 2024-12-31 102/week @ 2025-01-07 199/week @ 2025-01-14 353/week @ 2025-01-21 124/week @ 2025-01-28 220/week @ 2025-02-04 279/week @ 2025-02-11 160/week @ 2025-02-18 163/week @ 2025-02-25 154/week @ 2025-03-04 212/week @ 2025-03-11 175/week @ 2025-03-18 190/week @ 2025-03-25 219/week @ 2025-04-01

825 downloads per month
Used in 3 crates

MIT license

20KB
358 lines

pdf2image

A simplified port of Python's pdf2image that wraps pdftoppmand pdftocairo (part of poppler) to convert PDFs to image::DynamicImages.

Installation

Add to your project: cargo add pdf2image

pdf2image requires poppler to be installed.

Windows

Windows users will have to build or download poppler for Windows. Python's pdf2image maintainer recommends @oschwartz10612 version. You will then have to add the bin/ folder to PATH or use the environment variable PDF2IMAGE_POPPLER_PATH.

macOS

using homebrew:

brew install poppler

Linux

Most distros ship with pdftoppm and pdftocairo. If they are not installed, refer to your package manager to install poppler-utils

Platform-independent (Using conda)

  1. Install poppler: conda install -c conda-forge poppler
  2. Install pdf2image: pip install pdf2image

Quick Start

use pdf2image::{PDF2ImageError, RenderOptionsBuilder, PDF};

fn main() -> Result<(), PDF2ImageError> {
    let pdf = PDF::from_file("examples/pdfs/ropes.pdf").unwrap();
    let pages = pdf.render(
        pdf2image::Pages::Range(1..=8),
        RenderOptionsBuilder::default().pdftocairo(true).build()?,
    )?;

    std::fs::create_dir("examples/out").unwrap();
    for (i, page) in pages.iter().enumerate() {
        page.save_with_format(format!("examples/out/{}.jpg", i + 1), image::ImageFormat::Jpeg)?;
    }

    Ok(())
}

Changelog

  • Reviewed all occurences of .unwrap(), refactored unnecessary ones to return errors and added comments detailing why it is safe to call (Thank you @qarmin!).

License

pdf2image includes code derived from Edouard Belval's pdf2image Python module, which is MIT licensed. Similarly, pdf2image is also licensed under the MIT License.

Dependencies

~17MB
~391K SLoC