#![allow(clippy::uninlined_format_args)]
use transmutation::{ConversionOptions, Converter, ImageQuality, OutputFormat};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let converter = Converter::new()?;
let options = ConversionOptions {
split_pages: true,
optimize_for_llm: true,
max_chunk_size: 1024,
image_quality: ImageQuality::High,
dpi: 300,
ocr_language: "eng".to_string(),
preserve_layout: true,
extract_tables: true,
extract_images: true,
include_metadata: true,
compression_level: 9,
remove_headers_footers: true,
remove_watermarks: false,
normalize_whitespace: true,
use_ffi: false,
use_precision_mode: false,
};
println!("Converting with advanced options...");
let split_pages = options.split_pages;
let result = converter
.convert("document.pdf")
.to(OutputFormat::Markdown {
split_pages: true,
optimize_for_llm: true,
})
.with_options(options)
.execute()
.await?;
println!("\n✅ Conversion complete!");
if let Some(title) = &result.metadata.title {
println!("📖 Title: {}", title);
}
if let Some(author) = &result.metadata.author {
println!("👤 Author: {}", author);
}
println!("\n📊 Statistics:");
println!(" Pages: {}", result.page_count());
println!(" Tables: {}", result.statistics.tables_extracted);
println!(" Chunks: {}", result.chunk_count());
if split_pages {
result.save("data/output").await?;
println!(
"\n💾 Saved {} pages to data/output_page_*.md",
result.page_count()
);
} else {
result.save("data/output.md").await?;
println!("\n💾 Saved to data/output.md");
}
Ok(())
}