use env_logger; use std::fs::File; use wkhtmltopdf::Orientation; use wkhtmltopdf::*; fn main() { env_logger::init(); let pdf_app = PdfApplication::new().expect("Failed to init PDF application"); let html = r#"

Rust can haz PDFs

"#; let mut settings = pdf_app.builder(); settings .orientation(Orientation::Landscape) .margin(Size::Millimeters(12)) .title("PDFs for Rust"); unsafe { // Enables warning for JavaScript errors that may occur settings.object_setting("load.debugJavascript", "true"); } // It is still safest to initialize global and object settings from the builder // which provides a set of known-safe settings let gs = settings .global_settings() .expect("failed to create global settings"); let os = settings .object_settings() .expect("failed to create object settings"); // Instead of finalizing the builder with a `build_*` method, // we can create the converter manually from the global settings let mut c = gs.create_converter(); // Provides an event handling for JavaScript warnings, when debug is on c.set_warning_callback(Some(Box::new(|warn| { println!("warning: {}", warn); }))); // Add an html object and convert c.add_html_object(os, &html); let mut pdfout = c.convert().expect("failed to convert"); // let mut pdfout = pdfout; let mut file = File::create("basic.pdf").expect("failed to create basic.pdf"); let bytes = std::io::copy(&mut pdfout, &mut file).expect("failed to write to basic.pdf"); println!("wrote {} bytes to file: basic.pdf", bytes); }