use std::io::{Cursor, Write as _};
use zip::{write::SimpleFileOptions, CompressionMethod, ZipWriter};
pub fn synth_docx(rels_xml: &str, document_xml: &str) -> Vec<u8> {
synth_docx_with_entries(&[
(
"_rels/.rels",
CompressionMethod::Deflated,
rels_xml.as_bytes(),
),
(
"word/document.xml",
CompressionMethod::Deflated,
document_xml.as_bytes(),
),
])
}
pub fn synth_docx_with_entries(entries: &[(&str, CompressionMethod, &[u8])]) -> Vec<u8> {
let buf = Cursor::new(Vec::new());
let mut writer = ZipWriter::new(buf);
for (name, method, data) in entries {
let options = SimpleFileOptions::default().compression_method(*method);
writer
.start_file(*name, options)
.expect("start_file failed");
writer.write_all(data).expect("write_all failed");
}
writer.finish().expect("finish failed").into_inner()
}