pub struct PageBuilder { /* private fields */ }Expand description
Builder for constructing a single PDF page with content streams.
Implementations§
Source§impl PageBuilder
impl PageBuilder
Sourcepub fn new(width: f64, height: f64) -> PageBuilder
pub fn new(width: f64, height: f64) -> PageBuilder
Create a new page builder with the given dimensions. Default US Letter size is 612 x 792 points.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn set_font(&mut self, resource_name: &str, size: f64)
pub fn set_font(&mut self, resource_name: &str, size: f64)
Set the current font and size. Emits BT /{name} {size} Tf.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn begin_text(&mut self)
pub fn begin_text(&mut self)
Begin a text object: BT.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn end_text(&mut self)
pub fn end_text(&mut self)
End a text object: ET.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn move_to(&mut self, x: f64, y: f64)
pub fn move_to(&mut self, x: f64, y: f64)
Move to position (x, y): x y Td.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn show_text(&mut self, text: &str)
pub fn show_text(&mut self, text: &str)
Show text string with PDF string escaping: (text) Tj.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn set_fill_rgb(&mut self, r: f64, g: f64, b: f64)
pub fn set_fill_rgb(&mut self, r: f64, g: f64, b: f64)
Set fill color in RGB: r g b rg.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn set_stroke_rgb(&mut self, r: f64, g: f64, b: f64)
pub fn set_stroke_rgb(&mut self, r: f64, g: f64, b: f64)
Set stroke color in RGB: r g b RG.
Sourcepub fn draw_line(&mut self, x1: f64, y1: f64, x2: f64, y2: f64)
pub fn draw_line(&mut self, x1: f64, y1: f64, x2: f64, y2: f64)
Draw a line from (x1,y1) to (x2,y2) and stroke: x1 y1 m x2 y2 l S.
Sourcepub fn draw_rect(&mut self, x: f64, y: f64, w: f64, h: f64)
pub fn draw_rect(&mut self, x: f64, y: f64, w: f64, h: f64)
Draw a stroked rectangle: x y w h re S.
Sourcepub fn fill_rect(&mut self, x: f64, y: f64, w: f64, h: f64)
pub fn fill_rect(&mut self, x: f64, y: f64, w: f64, h: f64)
Draw a filled rectangle: x y w h re f.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn draw_image(&mut self, name: &str, x: f64, y: f64, w: f64, h: f64)
pub fn draw_image(&mut self, name: &str, x: f64, y: f64, w: f64, h: f64)
Draw an image with transformation: q w 0 0 h x y cm /name Do Q.
Sourcepub fn draw_inline_image(
&mut self,
width: u32,
height: u32,
bpc: u8,
color_space: &str,
data: &[u8],
)
pub fn draw_inline_image( &mut self, width: u32, height: u32, bpc: u8, color_space: &str, data: &[u8], )
Draw an inline image directly in the content stream.
Writes BI /W {width} /H {height} /BPC {bpc} /CS /{cs} ID {data} EI.
Sourcepub fn add_font(&mut self, resource_name: &str, font_name: &str)
pub fn add_font(&mut self, resource_name: &str, font_name: &str)
Register a font resource for this page.
Examples found in repository?
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11 let mut builder = DocumentBuilder::new();
12 builder.set_title("Created by justpdf");
13 builder.set_author("justpdf example");
14
15 let font = builder.add_standard_font("Helvetica");
16
17 // Page 1
18 let mut page1 = PageBuilder::new(612.0, 792.0);
19 page1.add_font(&font, "Helvetica");
20 page1.begin_text();
21 page1.set_font(&font, 36.0);
22 page1.move_to(72.0, 700.0);
23 page1.show_text("Hello, justpdf!");
24 page1.end_text();
25
26 page1.begin_text();
27 page1.set_font(&font, 14.0);
28 page1.move_to(72.0, 650.0);
29 page1.show_text("This PDF was created with the justpdf Rust library.");
30 page1.end_text();
31
32 // Draw a rectangle
33 page1.set_fill_rgb(0.2, 0.4, 0.8);
34 page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36 builder.add_page(page1);
37
38 // Page 2
39 let mut page2 = PageBuilder::new(612.0, 792.0);
40 page2.add_font(&font, "Helvetica");
41 page2.begin_text();
42 page2.set_font(&font, 24.0);
43 page2.move_to(72.0, 700.0);
44 page2.show_text("Page 2");
45 page2.end_text();
46 builder.add_page(page2);
47
48 let bytes = builder.build()?;
49 std::fs::write(output, &bytes)?;
50 println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52 Ok(())
53}Sourcepub fn add_font_ref(&mut self, resource_name: &str, font_ref: IndirectRef)
pub fn add_font_ref(&mut self, resource_name: &str, font_ref: IndirectRef)
Register an embedded font resource by indirect reference. Used for TrueType and other embedded fonts.
Sourcepub fn add_image(&mut self, resource_name: &str, image_ref: IndirectRef)
pub fn add_image(&mut self, resource_name: &str, image_ref: IndirectRef)
Register an image resource for this page.
Sourcepub fn build(
self,
writer: &mut PdfWriter,
pages_ref: &IndirectRef,
) -> IndirectRef
pub fn build( self, writer: &mut PdfWriter, pages_ref: &IndirectRef, ) -> IndirectRef
Build the page object and add it (and its content stream) to the writer.
Returns the indirect reference to the Page dictionary.
Trait Implementations§
Source§impl Default for PageBuilder
impl Default for PageBuilder
Source§fn default() -> PageBuilder
fn default() -> PageBuilder
Auto Trait Implementations§
impl Freeze for PageBuilder
impl RefUnwindSafe for PageBuilder
impl Send for PageBuilder
impl Sync for PageBuilder
impl Unpin for PageBuilder
impl UnsafeUnpin for PageBuilder
impl UnwindSafe for PageBuilder
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
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>
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>
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