extract_one_page/
extract_one_page.rs1use hayro_syntax::Pdf;
4use hayro_write::{
5 ChunkSettings, ExtractionQuery, extract,
6 pdf_writer::{self, Ref},
7};
8use std::path::PathBuf;
9
10fn main() {
11 let data = std::fs::read(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../in.pdf")).unwrap();
13 let page_index = 0;
14
15 let pdf = Pdf::new(data).unwrap();
20
21 let query = ExtractionQuery::new_page(page_index);
22
23 let mut counter = 0;
24 let mut new_ref = || {
25 counter += 1;
26 Ref::new(counter)
27 };
28 let extraction_result = extract(
29 &pdf,
30 Box::new(&mut new_ref),
31 ChunkSettings { pretty: false },
32 &[query],
33 )
34 .unwrap();
35
36 let chunk = extraction_result.chunk;
37 let page_ref = extraction_result.root_refs[0].unwrap();
38 let parent = extraction_result.page_tree_parent_ref;
39
40 let catalog_id = new_ref();
41 let mut out_pdf = pdf_writer::Pdf::with_settings(ChunkSettings { pretty: false });
42 out_pdf.extend(&chunk);
43 out_pdf.catalog(catalog_id).pages(parent);
44 out_pdf.pages(parent).kids([page_ref]).count(1);
45
46 std::fs::write(
47 PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../out.pdf"),
48 out_pdf.finish(),
49 )
50 .unwrap();
51}