mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-09 07:15:22 +00:00
46 lines
1.9 KiB
Rust
46 lines
1.9 KiB
Rust
//! Printing (execution plan M10.5). Layer L4.
|
|
//!
|
|
//! [`impose`] turns the pages to print into a print-ready PDF of *sheets*, laid out the way
|
|
//! Acrobat's Print dialog describes them:
|
|
//! - **Size**: one page per sheet, Fit, Actual size, Shrink oversized pages or a custom scale,
|
|
//! centred;
|
|
//! - **Multiple**: pages per sheet in a grid (2, 4, 6, 9, 16 or custom), four page orders,
|
|
//! optional page borders and auto-rotation;
|
|
//! - **Booklet**: saddle-stitched spreads (both sides, front or back only; left or right
|
|
//! binding);
|
|
//! - **Poster**: each page enlarged across several sheets with overlap and cut marks;
|
|
//! - orientation (auto, portrait, landscape) and what to print (the document, with markups,
|
|
//! with stamps, or form fields only; annotations print only with their Print flag).
|
|
//!
|
|
//! The sheets are written as a new, unencrypted, garbage-collected PDF; [`spool`] hands it to
|
|
//! the system's print spooler (CUPS on macOS and Linux).
|
|
|
|
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
|
|
|
|
use pdfcraft_content::Matrix;
|
|
use pdfcraft_cos::{DecodeBudget, Dict, Document, ObjRef, Object, SaveOptions, Stream, write_full};
|
|
|
|
pub mod range;
|
|
pub mod spool;
|
|
#[cfg(test)]
|
|
mod tests;
|
|
|
|
pub use range::{Subset, select_listed, select_pages};
|
|
|
|
mod error;
|
|
mod imposition;
|
|
mod settings;
|
|
mod sheets;
|
|
|
|
pub use error::{PrintError, WORDINGS, Words, in_english};
|
|
#[cfg(test)]
|
|
use imposition::{PAGES_LISTED, appearance, appearance_matrix, decoded_contents, page_form, prints};
|
|
pub use imposition::{impose, keep_printed, sheet_pages};
|
|
pub use settings::{
|
|
Binding, BookletSubset, Content, Crop, LABEL_PAPER, Layout, Orientation, PAPERS, PageOrder, Raster, Settings, SizeMode, booklet_duplex,
|
|
cups_media, media_option,
|
|
};
|
|
#[cfg(test)]
|
|
use sheets::text_direction;
|
|
pub use sheets::{LABEL_MARGIN, MARGIN, Placement, Sheet, layout, matching_paper, text_reads_up};
|