fix(package): retain nested documents' embedded ICC profile bytes

This commit is contained in:
shmuelbiller1 2026-10-09 11:32:32 -04:00
parent 816a0fe762
commit 1f668dfaad
1 changed files with 7 additions and 2 deletions

View File

@ -149,10 +149,15 @@ impl<'a> Collector<'a> {
let unique = free_name(&name, if self.opts.links_folder { &mut self.link_names } else { &mut self.taken });
let destination_file = format!("{dir}{unique}");
if placed.contains(&file.path) {
let mut nested = vectorcraft_format::load(&bytes).map_err(|e| bad(C, format!("linked VectorCraft document {} cannot be packaged: {e}", file.path)))?;
let saved = vectorcraft_format::load_file(&bytes).map_err(|e| bad(C, format!("linked VectorCraft document {} cannot be packaged: {e}", file.path)))?;
let mut nested = saved.doc;
self.collect(&mut nested, &file.path, &destination_file, depth + 1)?;
if self.opts.relink {
bytes = vectorcraft_format::save_file(&nested);
// Preserve embedded ICC profiles when rewriting a linked native file.
let mut options = vectorcraft_format::SaveOptions::for_doc(&nested);
options.profiles = saved.profiles;
bytes = vectorcraft_format::save_with(&nested, &options)
.map_err(|e| bad(C, format!("could not rewrite packaged document {}: {e}", file.path)))?;
}
}
let copy = Copied { name: destination_file.clone(), size: bytes.len() as u64, hash: hash_bytes(&bytes) };