Expand description
A crate for rendering PDF files.
This crate allows you to render pages of a PDF file into bitmaps. It is supposed to be relatively lightweight, since we do not have any dependencies on the GPU. All the rendering happens on the CPU.
The ultimate goal of this crate is to be a feature-complete and performant PDF rasterizer.
With that said, we are currently still very far away from reaching that goal: So far, no effort
has been put into performance optimizations, as we are still working on implementing missing features.
However, this crate is currently the most comprehensive and feature-complete
implementation of a PDF rasterizer in pure Rust. This claim is supported by the fact that we currently
include over 1000 PDF files in our regression test suite. The majority of those have been scraped
from the pdf.js
and PDFBOX
test suites and therefore represent a very large and diverse sample
of PDF files.
As mentioned, there are still some serious limitations, including lack of support for encrypted/password-protected PDF files, blending and isolation, knockout groups as well as a range of smaller features such as color key masking. But you should be able to render the vast majority of PDF files without too many issues.
§Safety
This crate forbids unsafe code via a crate-level attribute.
§Examples
For usage examples, see the example in the GitHub repository.
§Cargo features
This crate has two optional features:
jpeg2000
: See the description ofhayro-syntax
for more information.embed-fonts
: See the description ofhayro-interpret
for more information.
Structs§
- Interpreter
Settings - Settings that should be applied during the interpretation process.
- A PDF file.
- Pixmap
- A pixmap of premultiplied RGBA8 values backed by
u8
. - Render
Settings - Settings to apply during rendering.
Enums§
- Font
Query - A query for a font.
- Standard
Font - The 14 standard fonts of PDF.
Functions§
- render
- Render the page with the given settings to a pixmap.
Type Aliases§
- Font
Data - A container for the bytes of a PDF file.