mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-28 12:08:46 -06:00
InDesign writes fades as luminosity soft masks whose group is one extended axial `sh` over the whole page. hayro 0.7 sampled every such shading pixel by pixel through the shading function, so a report page with 40 of them took 10-15 s at 144 dpi. Backport hayro 0.8.0's `gradient` module: an axial or radial shading that a native gradient draws exactly becomes sRGB stops (within 0.01 per channel, a stop at every stitching bound), painted as a vello_cpu gradient. Upstream's half-pixel shift is left out: it suits vello_cpu 0.3 but moves 0.0.8's gradients off pixel centres. Page 4 of the reported file: 10.8 s -> 1.0 s. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
65 lines
1.9 KiB
Rust
65 lines
1.9 KiB
Rust
/*!
|
|
A crate for interpreting PDF files.
|
|
|
|
This crate provides an abstraction to interpret the content of a PDF file and render them
|
|
into an abstract [`Device`], which clients can implement as needed. This allows you, for
|
|
example, to render PDF files to bitmaps (which is what the `hayro` crate does), or other formats
|
|
such as SVG.
|
|
|
|
It should be noted that this crate is still very much in development. Therefore it currently
|
|
lacks pretty much any documentation on how to use it. It's current API also only really makes it
|
|
useful for rendering to PNG or SVG, though this will be improved upon in the future.
|
|
|
|
# Examples
|
|
See the `examples` folder on the GitHub repository. Apart from that, you can also consult
|
|
the implementation of `hayro` and `hayro-svg` to get an idea on how to use this crate.
|
|
|
|
# Safety
|
|
This crate forbids unsafe code via a crate-level attribute.
|
|
|
|
# Cargo features
|
|
This crate has one optional feature:
|
|
- `embed-fonts`: PDF processors are required to support 14 predefined fonts that do not need to be
|
|
embedded into a PDF file. If you enable this feature, hayro will embed a (permissively-licensed)
|
|
substitute for each font, so that you don't have to implement your custom font loading logic. This
|
|
will add around ~240KB to your binary.
|
|
*/
|
|
|
|
#![forbid(unsafe_code)]
|
|
#![deny(missing_docs)]
|
|
|
|
#[macro_use]
|
|
mod log;
|
|
|
|
mod cache;
|
|
mod context;
|
|
mod convert;
|
|
mod device;
|
|
mod function;
|
|
mod interpret;
|
|
mod ocg;
|
|
mod soft_mask;
|
|
mod types;
|
|
mod x_object;
|
|
/// PdfCraft patch: exported for its regression test.
|
|
pub use x_object::image_size_ok;
|
|
|
|
pub mod color;
|
|
pub mod encode;
|
|
pub mod font;
|
|
pub mod gradient;
|
|
pub mod pattern;
|
|
pub mod shading;
|
|
pub mod util;
|
|
|
|
pub use cache::CacheKey;
|
|
pub use context::*;
|
|
pub use device::*;
|
|
pub use function::Function;
|
|
pub use hayro_cmap;
|
|
pub use hayro_syntax;
|
|
pub use interpret::*;
|
|
pub use soft_mask::*;
|
|
pub use types::*;
|
|
pub use util::{RectExt, TransformExt};
|