use oxidize_pdf::error::Result;
use oxidize_pdf::{Color, Document, Font, Page};
fn main() -> Result<()> {
println!("🚀 Creando PDF 'Hello World'...");
let mut doc = Document::new();
doc.set_title("Hello World PDF");
doc.set_author("oxidize-pdf");
doc.set_subject("Test de funcionalidad básica");
let mut page = Page::a4();
page.text()
.set_font(Font::Helvetica, 24.0)
.at(100.0, 700.0)
.write("Hello World!")?;
page.text()
.set_font(Font::Helvetica, 14.0)
.at(100.0, 650.0)
.write("Este PDF fue generado por oxidize-pdf")?;
page.text()
.set_font(Font::Helvetica, 12.0)
.at(100.0, 600.0)
.write(&format!(
"Fecha: {}",
chrono::Utc::now().format("%Y-%m-%d %H:%M:%S")
))?;
page.graphics()
.set_stroke_color(Color::rgb(0.0, 0.5, 1.0))
.set_line_width(2.0)
.rect(100.0, 400.0, 300.0, 100.0)
.stroke();
page.graphics()
.set_fill_color(Color::red())
.circle(250.0, 300.0, 50.0)
.fill();
doc.add_page(page);
let output_path = "examples/results/hello_world.pdf";
doc.save(output_path)?;
if let Ok(metadata) = std::fs::metadata(output_path) {
let file_size = metadata.len();
println!("✅ PDF generado exitosamente: {}", output_path);
println!("📊 Tamaño: {} bytes", file_size);
println!("🎉 ¡Funcionalidad básica CONFIRMADA!");
}
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_hello_world_generation() {
std::fs::create_dir_all("examples/results").ok();
let result = main();
assert!(result.is_ok(), "Should generate PDF successfully");
let path = "examples/results/hello_world.pdf";
assert!(std::path::Path::new(path).exists(), "PDF file should exist");
let file_size = std::fs::metadata(path).unwrap().len();
assert!(file_size > 100, "PDF should have substantial content");
}
}