[package] name = "pdftract-cli" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true repository.workspace = true publish = true default-run = "pdftract" [build-dependencies] libflate = "2" [[bin]] name = "pdftract" path = "src/main.rs" test = true [[bin]] name = "generate_lzw_fixtures" path = "../../tests/fixtures/generate_lzw_fixtures_main.rs" [[bin]] name = "generate_preprocess_fixtures" path = "../../tests/fixtures/preprocess/generate_fixtures_main.rs" [[bin]] name = "gen_lexer_golden" path = "../../tests/gen_lexer_golden.rs" [[bin]] name = "build-xref-fixture" path = "../../tools/build-xref-fixture/main.rs" [[bin]] name = "generate_slide_deck_fixtures" path = "../../tests/fixtures/generate_slide_deck_fixtures.rs" [[bin]] name = "generate_scientific_paper_fixtures" path = "../../tests/fixtures/generate_scientific_paper_fixtures.rs" [[bin]] name = "generate_book_chapter_fixtures" path = "../../tests/fixtures/generate_book_chapter_fixtures.rs" [[bench]] name = "grep_1000" harness = false [lib] name = "pdftract_cli" path = "src/lib.rs" [dependencies] aho-corasick = "1" anyhow = { workspace = true } atty = "0.2" terminal_size = "0.3" async-stream = "0.3" axum = { version = "0.7", features = ["json", "multipart"] } base64 = { workspace = true } bytes = "1" chrono = { version = "0.4", features = ["serde"] } clap = { version = "4.5", features = ["derive"] } crossbeam-channel = "0.5" dirs = "5.0" hyper = { version = "1.0", features = ["full"] } hyper-util = { version = "0.1", features = ["full"] } image = "0.24" http-body-util = "0.1" humantime = "2.1" indicatif = { version = "0.17", optional = true } num_cpus = "1" rayon = "1" libloading = { version = "0.8", optional = true } lzw = { workspace = true } multer = "3" pdftract-core = { path = "../pdftract-core" } regex = "1.10" secrecy = { workspace = true } semver = "1.0" serde = { workspace = true, features = ["derive"] } serde_json = "1.0" serde_yaml = { version = "0.9", optional = true } sha2 = "0.10" termcolor = "1.4" schemars = { version = "0.8", features = ["derive"] } subtle = "2.6" tempfile = "3" tera = "1" tokio = { version = "1", features = ["full"] } tokio-stream = "0.1" tower = { version = "0.5", features = ["full"] } tower-http = { version = "0.5", features = ["cors", "trace", "limit", "compression-full"] } tracing = { workspace = true } ureq = { version = "2.9", optional = true } uuid = { version = "1.0", features = ["v4", "serde"] } walkdir = "2" chromiumoxide = { version = "0.6", optional = true } [target.'cfg(unix)'.dependencies] libc = "0.2" [features] default = [] # OCR support via Tesseract ocr = ["pdftract-core/ocr"] # Full rendering via PDFium (JBIG2, JPEG2000, CCITT decoding) full-render = ["dep:libloading", "pdftract-core/full-render"] # Remote HTTP source support remote = ["dep:ureq"] # Document profiles profiles = ["dep:serde_yaml", "pdftract-core/profiles"] # HTTP serve mode serve = [] # MCP server mode mcp = [] # Inspector web viewer inspect = [] # Folder grep mode grep = ["dep:indicatif"] # Content-addressed cache cache = [] # Visual citation receipts receipts = [] # Markdown output markdown = [] # Headless browser testing for security tests (requires Chrome/Chromium) chrome-test = ["chromiumoxide"] [package.metadata.binstall] pkg-url = "{ repo }/releases/download/v{ version }/pdftract-v{ version }-{ target }.{ archive-format }" pkg-fmt = "tgz" bin-dir = "pdftract-v{ version }-{ target }/{ bin }{ binary-ext }" [package.metadata.binstall.overrides.x86_64-pc-windows-gnu] pkg-fmt = "zip" [dev-dependencies] ureq = { version = "2.9", features = ["socks-proxy"] } serde_yaml = "0.9" jsonschema = "0.18" reqwest = { version = "0.12", features = ["blocking", "json", "rustls-tls", "multipart"], default-features = false } schemars = { version = "0.8", features = ["derive"] } image = "0.24" chrono = { version = "0.4", features = ["serde"] } criterion = "0.5" chromiumoxide = "0.6"