Skip to content

Library API zh

kudryavskiy_rv edited this page Jul 5, 2026 · 1 revision

库 API(Rust)

快速开始

use office_print::config::{ConvertOptions, Format, OutputFormat};

// 文件 → PDF
let result = office_print::convert("report.docx").unwrap();
std::fs::write("report.pdf", result.as_pdf_bytes().unwrap()).unwrap();

// 带选项的文件
let options = ConvertOptions {
    output_format: OutputFormat::Png,
    ..Default::default()
};
let result = office_print::convert_with_options("input.pptx", &options).unwrap();

// 字节 → PDF
let result = office_print::convert_bytes(&data, Format::Xlsx, &options).unwrap();

// IR → PDF 直接渲染
let pdf = office_print::render_document(&ir_document).unwrap();

访问结果

match &result.output {
    OutputData::Pdf(bytes) => {
        std::fs::write("out.pdf", bytes).unwrap();
    }
    OutputData::Raster { pages, format } => {
        for (i, page) in pages.iter().enumerate() {
            let ext = match format { OutputFormat::Png => "png", OutputFormat::Jpeg => "jpg", _ => "bin" };
            std::fs::write(format!("page-{}.{}", i + 1, ext), page).unwrap();
        }
    }
}

ConvertOptions

字段 类型 默认值 说明
output_format OutputFormat Pdf Pdf、Png、Jpeg
jpeg_quality u8 92 JPEG 质量 1–100
paper_size Option<PaperSize> None A4、Letter、Legal、Custom
landscape Option<bool> None 横向
pdf_standard Option<PdfStandard> None A2b 用于 PDF/A
pdf_ua bool false PDF/UA-1
tagged bool false 带标签的 PDF
font_paths Vec<PathBuf> [] 额外字体目录
sheets Option<Vec<String>> None XLSX 工作表筛选
slide_range Option<SlideRange> None 幻灯片范围
streaming bool false XLSX 流模式
streaming_chunk_size Option<usize> None 块大小

错误处理

match office_print::convert("input.docx") {
    Ok(result) => { /* 使用结果 */ }
    Err(ConvertError::UnsupportedEncryption) => eprintln!("文件已加密"),
    Err(ConvertError::UnsupportedFormat(f)) => eprintln!("未知格式:{f}"),
    Err(e) => eprintln!("转换失败:{e}"),
}

Home-zh

Clone this wiki locally