pub struct PdfDocument {
pub pages: Vec<PdfPage>,
}Expand description
A parsed PDF: per-page text cells and page images.
Fields§
§pages: Vec<PdfPage>Implementations§
Source§impl PdfDocument
impl PdfDocument
Sourcepub fn open(bytes: &[u8], password: Option<&str>) -> Result<Self, PdfiumError>
pub fn open(bytes: &[u8], password: Option<&str>) -> Result<Self, PdfiumError>
Parse a PDF from bytes, optionally decrypting with password.
Examples found in repository?
examples/extract.rs (line 6)
3fn main() {
4 let path = std::env::args().nth(1).expect("usage: extract <file.pdf>");
5 let bytes = std::fs::read(&path).expect("read pdf");
6 match fleischwolf_pdf::PdfDocument::open(&bytes, None) {
7 Ok(doc) => {
8 for (i, page) in doc.pages.iter().enumerate() {
9 println!(
10 "--- page {} ({:.0}x{:.0}, {} cells) ---",
11 i + 1,
12 page.width,
13 page.height,
14 page.cells.len()
15 );
16 for c in page.cells.iter().take(8) {
17 println!(
18 " [{:.0},{:.0},{:.0},{:.0}] {:?}",
19 c.l, c.t, c.r, c.b, c.text
20 );
21 }
22 }
23 }
24 Err(e) => eprintln!("ERROR: {e}"),
25 }
26}More examples
examples/layout.rs (line 10)
7fn main() {
8 let path = std::env::args().nth(1).expect("usage: layout <file.pdf>");
9 let bytes = std::fs::read(&path).expect("read pdf");
10 let doc = PdfDocument::open(&bytes, None).expect("open pdf");
11 let mut model = LayoutModel::load().expect("load layout model");
12 for (i, page) in doc.pages.iter().enumerate().take(1) {
13 let regions = model
14 .predict(&page.image, page.width, page.height)
15 .expect("predict");
16 println!(
17 "page {} ({:.0}x{:.0}): {} regions",
18 i + 1,
19 page.width,
20 page.height,
21 regions.len()
22 );
23 let mut rs = regions.clone();
24 rs.sort_by(|a, b| a.t.total_cmp(&b.t));
25 for r in &rs {
26 println!(
27 " {:<16} {:.2} [{:.0},{:.0},{:.0},{:.0}]",
28 r.label, r.score, r.l, r.t, r.r, r.b
29 );
30 }
31 }
32}Auto Trait Implementations§
impl Freeze for PdfDocument
impl RefUnwindSafe for PdfDocument
impl Send for PdfDocument
impl Sync for PdfDocument
impl Unpin for PdfDocument
impl UnsafeUnpin for PdfDocument
impl UnwindSafe for PdfDocument
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more