Aprire un documento Word, un foglio Excel o una presentazione PowerPoint dal browser non è certo una novità. Google Drive, Microsoft 365 e numerosi visualizzatori online permettono di farlo da tempo. Quasi sempre, però, dietro l’interfaccia web c’è un server: il file viene caricato, elaborato, convertito oppure interpretato da un servizio remoto prima di comparire sullo schermo.
Office Open XML Viewer (repository GitHub) si propone come una libreria open source (licenza MIT) capace di interpretare i formati DOCX, XLSX e PPTX nel browser, sfruttando un parser scritto in Rust, compilato in WebAssembly (Wasm), e un motore grafico basato principalmente sulle API Canvas 2D.
Il risultato è interessante soprattutto per un motivo importante: il documento trasferito a Office Open XML Viewer rimane interamente sul dispositivo dell’utente. Non serve Microsoft Office, non occorre installare LibreOffice e, soprattutto, non è necessario inviare il file a un server affinché qualcuno lo converta in HTML, PDF o immagini. La stessa demo ufficiale permette di scegliere un documento e visualizzarlo mantenendo il contenuto nel browser locale.
DOCX, XLSX e PPTX sono in realtà archivi pieni di XML
Per capire perché sia possibile realizzare un progetto come Office Open XML Viewer, bisogna osservare cosa contengono realmente i file DOCX, XLSX e PPTX.
Sono formati che appartengono alla famiglia Office Open XML (OOXML), standardizzata attraverso ECMA-376 e ISO/IEC 29500, ma la questione è decisamente più complessa di quanto lasci intendere la presenza di uno standard internazionale.
Microsoft Office utilizza infatti prevalentemente OOXML Transitional e introduce comportamenti, estensioni e dettagli implementativi che non coincidono sempre con quanto stabilito dallo standard ISO. È un tema sul quale The Document Foundation (TDF), organizzazione che cura lo sviluppo di LibreOffice, insiste da tempo. Ne abbiamo parlato anche a proposito dello scontro tra LibreOffice e ONLYOFFICE sui formati dei documenti e sul lock-in: secondo TDF, il problema non consiste semplicemente nell’esistenza di OOXML come standard, ma nel fatto che la concreta implementazione utilizzata da Microsoft Office incorpora caratteristiche, comportamenti legacy e complessità che le suite concorrenti devono cercare di riprodurre.
La polemica è riemersa ancora più chiaramente nel confronto tra LibreOffice ed Euro-Office sulla sovranità digitale europea: TDF ha contestato proprio la scelta di utilizzare OOXML come formato predefinito, contrapponendo ODF come formato realmente progettato per l’interoperabilità tra applicazioni differenti.
La distinzione fondamentale è tra OOXML Strict, concepito come variante maggiormente aderente allo standard ISO, e OOXML Transitional, nato anche per conservare la compatibilità con l’enorme patrimonio di documenti e comportamenti delle precedenti versioni di Office. Microsoft ha continuato a usare Transitional come riferimento principale per DOCX, XLSX e PPTX.
Un documento .docx, comunque, non è un unico flusso binario incomprensibile: è sostanzialmente un archivio ZIP contenente numerosi file XML, immagini e altre risorse.

La struttura di un file OOXML
Rinominando un file documento.docx in documento.zip è possibile aprirlo con un normale gestore di archivi compressi. All’interno compaiono directory come:
word/
word/document.xml
word/styles.xml
word/theme/
word/media/
_rels/
docProps/
[Content_Types].xml
Lo stesso principio vale per Excel e PowerPoint. Un file .xlsx contiene, tra le altre cose, descrizioni XML dei fogli, delle celle, degli stili, delle formule e dei grafici; un .pptx comprende invece slide, master, layout, relazioni, immagini, forme e temi.
Per ricostruire correttamente un documento bisogna interpretare relazioni tra file diversi, ereditarietà degli stili, unità di misura, regole tipografiche, temi, strutture DrawingML, grafici e numerose eccezioni accumulate in decenni di evoluzione di Microsoft Office.
Come funziona Office Open XML Viewer: Rust legge OOXML, WebAssembly porta il parser nel browser
Il progetto utilizza parser Rust separati per i tre principali formati. Il codice Rust viene compilato in moduli WebAssembly, caricabili direttamente dal browser; i renderer TypeScript ricevono quindi il modello del documento e si occupano della rappresentazione grafica. L’architettura del progetto identifica esplicitamente parser Rust/Wasm distinti per DOCX, XLSX e PPTX e renderer Canvas dedicati ai tre formati.
Office Open XML Viewer non tenta semplicemente di tradurre ogni elemento OOXML in una serie di tag HTML: utilizza invece Canvas 2D per disegnare pagine, celle, forme, immagini e altri elementi.
HTML e CSS sono eccellenti per documenti web, ma Word e PowerPoint utilizzano modelli di impaginazione molto diversi. Posizionamento assoluto, forme, sovrapposizioni, rotazioni, text box, grafici e layout ereditati non sempre possono essere riprodotti fedelmente affidandosi al normale flusso HTML.
Canvas permette invece al renderer di controllare direttamente coordinate e operazioni di disegno.
Il progetto offre inoltre motori “headless” denominati DocxDocument, XlsxWorkbook e PptxPresentation: uno sviluppatore può quindi interpretare una sola volta un documento e renderizzare successivamente pagine, fogli o slide nei Canvas forniti dall’applicazione.
Come usare Office Open XML Viewer direttamente dal browser
Per provare Office Open XML Viewer non serve installare Microsoft Office, LibreOffice o altri programmi sul PC. È sufficiente aprire la demo ufficiale, scegliere un file DOCX, XLSX o PPTX dal dispositivo e attendere che il browser ne completi l’elaborazione.
Il documento non deve essere convertito e, soprattutto, non viene inviato a un servizio remoto: come già evidenziato, parsing e rendering avvengono in locale attraverso WebAssembly e Canvas 2D. È quindi possibile utilizzare la demo anche per verificare rapidamente la fedeltà con cui vari tipi di documenti sono riprodotti e proposti all’utente.
Per gli sviluppatori il progetto diventa ancora più interessante, perché la stessa tecnologia può essere integrata in una normale applicazione web installando il pacchetto corrispondente. Esempio:
npm install @silurus/ooxml
La libreria espone visualizzatori distinti per Word, Excel e PowerPoint. Nel caso di un documento DOCX, ad esempio, basta predisporre un elemento <canvas> nella pagina, creare un’istanza di DocxViewer e passargli il file da caricare:
import { DocxViewer } from '@silurus/ooxml/docx';
const canvas = document.getElementById('docx-canvas');
const viewer = new DocxViewer(canvas);
await viewer.load('/document.docx');
Per i file XLSX è disponibile XlsxViewer, mentre per PowerPoint si utilizza PptxViewer.
Il progetto offre inoltre DocxScrollViewer e PptxScrollViewer, pensati per mostrare documenti e presentazioni come una superficie a scorrimento continuo simile a quella di un lettore PDF.
Gli sviluppatori che non volessero utilizzare l’interfaccia predefinita possono invece ricorrere ai motori “headless”, effettuando il parsing una sola volta e disegnando poi il contenuto nei Canvas gestiti direttamente dall’applicazione.
I moduli Wasm non sono incorporati come enormi stringhe nel bundle JavaScript, ma distribuiti come file .wasm separati e caricati dal browser quando necessario.
Non significa (ancora) ottenere Word, Excel e PowerPoint nel browser
Il progetto Office Open XML Viewer non punta a fornire API complete per modificare i documenti OOXML, salvare nuovamente il file o garantire un ciclo di apertura-modifica-salvataggio senza perdita di informazioni.
Gli autori escludono esplicitamente dal perimetro del progetto interfacce di editing, modifica del modello e salvataggio. Rimangono invece tra gli obiettivi funzioni come selezione, copia, ricerca e integrazione con strumenti esterni.
Non ci troviamo quindi davanti a un sostituto di Word, Excel e PowerPoint: Office Open XML Viewer è un motore di visualizzazione Office incorporabile nelle applicazioni web.
Un gestionale potrebbe utilizzarlo per mostrare l’anteprima di un contratto DOCX; un sistema documentale potrebbe visualizzare un XLSX senza trasmetterlo a servizi esterni; una piattaforma educativa potrebbe presentare una slide PowerPoint direttamente nella propria interfaccia. E tutto ciò può avvenire mantenendo il file nel browser, senza trasferimenti esterni.