#图像转换 #PDF #图像 #单页 #转换 #poppler #pdf2img

pdf2image-alt

pdf2image的替代版本,具有从借用数据渲染和单页渲染的能力,增加了文本提取功能

3个版本 (破坏性更新)

0.3.0 2024年8月6日
0.2.0 2024年8月1日
0.1.0 2024年7月31日

#327 in 图像

Download history 249/week @ 2024-07-30 132/week @ 2024-08-06

每月381次下载

MIT 许可证

24KB
455

pdf2image

提供渲染单页和渲染多页的功能

Python的 pdf2image 的简化端口,包装 pdftoppmpdftocairo(Poppler的一部分),将PDF转换为 image::DynamicImage

这个库是基于 https://github.com/styrowolf/pdf2image 的分支,用tokio异步渲染代替了阻塞多线程(rayon)的使用。它本身是python pdf2image 库的端口。

它底层包装了 pdftoppmpdftocairo(Poppler的一部分),使用poppler的 "pdfinfo" 确定PDF的基本信息(页数和是否加密)

此分支使用异步渲染,并允许使用单独的函数渲染单页或多页。

[!INFO] 您必须在您的系统上安装Poppler才能使用此程序,它依赖于pdfinfo和

安装

pdf2image 需要已安装 poppler

cargo add pdf2image_alt

Windows

Windows用户将必须为Windows构建或下载 poppler。Python的 pdf2image 维护者推荐 @oschwartz10612 版本。然后您必须将 bin/ 文件夹添加到 PATH 或使用环境变量 PDF2IMAGE_POPPLER_PATH

macOS

使用 homebrew

brew安装poppler

Linux

大多数发行版都预装了 pdftoppmpdftocairo。如果未安装,请参考您的包管理器安装 poppler-utils

平台独立(使用 conda

  1. 安装 popplerconda install -c conda-forge poppler
  2. 安装 pdf2imagepip install pdf2image

快速开始

use pdf2image_alt::{render_pdf_multi_page, PDF2ImageError, PdfInfo, RenderOptionsBuilder};

#[tokio::main]
async fn main() -> Result<(), PDF2ImageError> {
    let data = std::fs::read("examples/pdfs/ropes.pdf").unwrap();
    let pdf_info = PdfInfo::read(data.as_slice()).await.unwrap();
    let options = RenderOptionsBuilder::default().pdftocairo(true).build()?;
    let pages = render_pdf_multi_page(
        &data,
        &pdf_info,
        pdf2image_alt::Pages::Range(1..=8),
        &options,
    )
    .await
    .unwrap();
    println!("{:?}", pages.len());

    Ok(())
}

许可证

pdf2image 包含从 Edouard Belvalpdf2image Python 模块中衍生出来的代码,该模块采用 MIT 许可。同样,pdf2image 也采用 MIT 许可。

依赖

~7–16MB
~193K SLoC