mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-25 02:29:31 -06:00
* cli: info names the standard a document declares A PDF/A file was summarised with no mention of PDF/A. `info` prints two dozen fields -- tagged, xfa, javascript, layers -- and said nothing about the standard, while the app's Standards panel reads the same declaration from the catalog's XMP and shows "PDF/A-2b" (#3319). `info` gains `pdfa` (the part and conformance together, e.g. "2B"), `pdfua` and `output_intents`, from `pdfcraft_preflight::declared` -- the call the Standards panel makes, so the two agree by construction rather than by a second reading of the metadata. A document that declares nothing leaves them null and empty. Read in the CLI rather than in `pdfcraft_render::Inspect`: render is layer 3 and preflight layer 4, so the summary struct can't reach it, while an app may depend on any layer. * cli: read the declaration from the bytes already in hand `Document::open_with_password` takes an `Arc<Vec<u8>>` and `info` already holds one, so `bytes.to_vec()` copied the whole file for every call -- a file-sized allocation on a large PDF, for nothing. Clone the `Arc` instead. * info: name the declared PDF/A level as the automation tools do (PDF/A-2b) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Brandon Thomas <echelon@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.1 KiB
TOML
39 lines
1.1 KiB
TOML
[package]
|
|
name = "pdfcraft-cli"
|
|
description = "PdfCraft command-line tool: inspect, render and robustness-check PDFs"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[[bin]]
|
|
name = "pdfcraft-cli"
|
|
path = "src/main.rs"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
pdfcraft-render = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
pdfcraft-engine = { workspace = true }
|
|
pdfcraft-audit = { workspace = true }
|
|
pdfcraft-cos = { workspace = true }
|
|
pdfcraft-preflight = { workspace = true }
|
|
pdfcraft-automation = { workspace = true }
|
|
pdfcraft-platform = { workspace = true }
|
|
base64 = "0.22"
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
# `geteuid` for `ui`'s control-file owner check: safe, so no `unsafe` libc call here.
|
|
# Already in Cargo.lock through the GUI crates.
|
|
rustix = { version = "1", features = ["process"] }
|
|
|
|
[build-dependencies]
|
|
# VERSIONINFO for pdfcraft-cli.exe; build.rs only uses it when targeting Windows.
|
|
winresource = "0.1"
|
|
|
|
[features]
|
|
default = ["mcp"]
|
|
# The opt-in MCP server (`pdfcraft-cli mcp`). Build with --no-default-features to leave it out.
|
|
mcp = ["pdfcraft-automation/mcp"]
|