{"record":{"id":"05e422535c50a014","repo":"flxzt/rnote","slug":"extracting-bitmap-image-format-from-doc-pages-expo","errorCode":null,"errorMessage":"Extracting bitmap image format from doc pages export prefs failed, not set to a bitmap format.","messagePattern":"Extracting bitmap image format from doc pages export prefs failed, not set to a bitmap format\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/rnote-engine/src/engine/export.rs","lineNumber":759,"sourceCode":"    }\n\n    /// Export the document pages as bitmap.\n    ///\n    /// Returns an error if the format pref is not set to a bitmap variant.\n    fn export_doc_pages_as_bitmap_bytes(\n        &self,\n        doc_pages_export_prefs_override: Option<DocPagesExportPrefs>,\n    ) -> oneshot::Receiver<Result<Vec<Vec<u8>>, anyhow::Error>> {\n        let (oneshot_sender, oneshot_receiver) = oneshot::channel::<anyhow::Result<Vec<Vec<u8>>>>();\n        let doc_pages_export_prefs = doc_pages_export_prefs_override\n            .unwrap_or(self.config.read().export_prefs.doc_pages_export_prefs);\n        let pages_contents = self.extract_pages_content(doc_pages_export_prefs.page_order);\n\n        rayon::spawn(move || {\n            let result = || -> Result<Vec<Vec<u8>>, anyhow::Error> {\n                let image_format = match doc_pages_export_prefs.export_format {\n                    DocPagesExportFormat::Svg => {\n                        return Err(anyhow::anyhow!(\n                            \"Extracting bitmap image format from doc pages export prefs failed, not set to a bitmap format.\"\n                        ));\n                    }\n                    DocPagesExportFormat::Png => image::ImageFormat::Png,\n                    DocPagesExportFormat::Jpeg => image::ImageFormat::Jpeg,\n                };\n                pages_contents\n                    .into_par_iter()\n                    .enumerate()\n                    .map(|(i, page_content)| {\n                        page_content\n                            .gen_svg(\n                                doc_pages_export_prefs.with_background,\n                                doc_pages_export_prefs.with_pattern,\n                                doc_pages_export_prefs.optimize_printing,\n                                DocPagesExportPrefs::MARGIN,\n                            )?\n                            .ok_or(anyhow::anyhow!(","sourceCodeStart":741,"sourceCodeEnd":777,"githubUrl":"https://github.com/flxzt/rnote/blob/bbc5354502ba2fc83eec2670b535348825e679a6/crates/rnote-engine/src/engine/export.rs#L741-L777","documentation":"Migration guard in TryFrom<RnoteFileMaj0Min9> for RnoteFileMaj0Min13: the engine_snapshot carried by the older file is not a JSON object, so the migration cannot access its fields. Fires on structurally corrupt .rnote files where engine_snapshot holds a non-object JSON value.","triggerScenarios":"Thrown at crates/rnote-engine/src/engine/export.rs:759 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The .rnote file is structurally corrupt; recover from a backup copy.","Inspect engine_snapshot in the file's JSON to see what non-object value it holds.","Re-save the document in the originating app version if it can still open the file."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bbc5354502ba2fc83eec2670b535348825e679a6","analyzedAt":"2026-09-08T13:20:33.747Z","contentChangedAt":"2026-09-08T13:20:33.747Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}