Convert Samsung Notes (.sdocx) files to SVG, PNG, or PDF with a Rust SDK, CLI, and WebAssembly bindings.
Try the browser app to preview, convert, and debug documents locally. Files are processed in your browser and are not uploaded.
cargo install sdocx-cli # CLI
cargo add sdocx # Rust library
npm install @twango/sdocx # JavaScript / WASMsdocx-cli note.sdocx # SVG (default)
sdocx-cli note.sdocx -o note.png
sdocx-cli note.sdocx -o note.pdf --pages "1-3, 5"
sdocx-cli note.sdocx -o note.pdf --font /path/to/Roboto-Regular.ttfPDF combines selected pages into one file; SVG and PNG produce separate files per page. Use --help for all options.
--font adds fonts for SVG, PNG and PDF. SVG embeds the faces it uses; all formats share the bundled Roboto defaults.
Or run with Docker:
docker run --rm -v "$(pwd)":/data ghcr.io/twangodev/sdocx /data/note.sdocxuse sdocx::{layout_document, parse};
fn main() -> sdocx::Result<()> {
let doc = parse("note.sdocx")?;
let layout = layout_document(&doc);
println!("{} visible page(s)", layout.pages.len());
Ok(())
}For PDF export, enable the pdf feature (Rust 1.92+) and use render_document_pdf. See the API docs.
import init, { parse } from "@twango/sdocx";
await init();
const doc = parse(new Uint8Array(await file.arrayBuffer()));
console.log(doc.pages);The format is reverse-engineered, and conversion is best-effort. Unsupported objects or styles may be omitted even when parsing succeeds. Keep original files and check output against Samsung Notes when fidelity matters. Protected documents must be unlocked or exported first.
Use the detailed Rust parse APIs or CLI diagnostics to inspect unsupported features. --verify-integrity adds stored-hash checks; it does not guarantee complete fidelity or fail conversion on mismatches.