1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
use std::env;
use std::path::PathBuf;
use pdf::error::PdfError;
use pdf::content::*;
use pdf::file::FileOptions;
use pdf::object::*;
use pdf::build::*;
use pdf::primitive::PdfString;
#[cfg(feature="cache")]
fn main() -> Result<(), PdfError> {
let path = PathBuf::from(env::args_os().nth(1).expect("no file given"));
let mut builder = PdfBuilder::new(FileOptions::cached());
let mut pages = Vec::new();
let content = Content::from_ops(vec![
Op::MoveTo { p: Point { x: 100., y: 100. } },
Op::LineTo { p: Point { x: 100., y: 200. } },
Op::LineTo { p: Point { x: 200., y: 200. } },
Op::LineTo { p: Point { x: 200., y: 100. } },
Op::Close,
Op::Stroke,
]);
let mut new_page = PageBuilder::from_content(content, &NoResolve)?;
new_page.media_box = Some(pdf::object::Rect {
left: 0.0,
top: 0.0,
bottom: 400.0,
right: 400.0
});
let resources = Resources::default();
/*
let font = Font {
name: Some("Test".into()),
subtype: pdf::font::FontType::TrueType,
data: FontData::TrueType(TFont {
base_font: None,
})
}
resources.fonts.insert("f1", font);
*/
new_page.resources = resources;
pages.push(new_page);
let catalog = CatalogBuilder::from_pages(pages);
let mut info = InfoDict::default();
info.title = Some(PdfString::from("test"));
let data = builder.info(info).build(catalog)?;
std::fs::write(path, data)?;
Ok(())
}
|