pub struct DocumentBuilder { /* private fields */ }Expand description
High-level builder for creating complete PDF documents.
Implementations§
Source§impl DocumentBuilder
impl DocumentBuilder
Sourcepub fn new() -> DocumentBuilder
pub fn new() -> DocumentBuilder
Create a new document builder.
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_standard_font(&mut self, base_font: &str) -> String
pub fn add_standard_font(&mut self, base_font: &str) -> String
Add a standard Type1 font (e.g. “Helvetica”, “Times-Roman”, “Courier”).
Returns the resource name (e.g. “F1”) to use when drawing text.
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_page(&mut self, page: PageBuilder)
pub fn add_page(&mut self, page: PageBuilder)
Add a page to the document from a PageBuilder.
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_title(&mut self, title: &str)
pub fn set_title(&mut self, title: &str)
Set the document title.
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}Set the document author.
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_subject(&mut self, subject: &str)
pub fn set_subject(&mut self, subject: &str)
Set the document subject.
Sourcepub fn set_producer(&mut self, producer: &str)
pub fn set_producer(&mut self, producer: &str)
Set the producer field.
Sourcepub fn set_creator(&mut self, creator: &str)
pub fn set_creator(&mut self, creator: &str)
Set the creator field.
Sourcepub fn embed_truetype_font(
&mut self,
font_data: &[u8],
) -> Result<String, JustPdfError>
pub fn embed_truetype_font( &mut self, font_data: &[u8], ) -> Result<String, JustPdfError>
Embed a TrueType font from raw TTF data.
Returns the resource name (e.g. “F1”, “F2”) for use in page content. The font is embedded with WinAnsiEncoding and a ToUnicode CMap.
Sourcepub fn set_encryption(&mut self, config: EncryptionConfig)
pub fn set_encryption(&mut self, config: EncryptionConfig)
Set encryption for the document.
Sourcepub fn set_xmp_metadata(
&mut self,
title: &str,
author: &str,
subject: &str,
creator: &str,
)
pub fn set_xmp_metadata( &mut self, title: &str, author: &str, subject: &str, creator: &str, )
Set XMP metadata on the document catalog.
Generates an XMP XML metadata stream with the given fields and attaches
it to the Catalog as /Metadata.
Sourcepub fn build(self) -> Result<Vec<u8>, JustPdfError>
pub fn build(self) -> Result<Vec<u8>, JustPdfError>
Build the document and return the PDF bytes.
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}Trait Implementations§
Source§impl Default for DocumentBuilder
impl Default for DocumentBuilder
Source§fn default() -> DocumentBuilder
fn default() -> DocumentBuilder
Auto Trait Implementations§
impl Freeze for DocumentBuilder
impl RefUnwindSafe for DocumentBuilder
impl Send for DocumentBuilder
impl Sync for DocumentBuilder
impl Unpin for DocumentBuilder
impl UnsafeUnpin for DocumentBuilder
impl UnwindSafe for DocumentBuilder
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