Come si esegue il rendering di un documento Word (.doc, .docx) nel browser utilizzando JavaScript?


146

Ho eseguito correttamente il codice per visualizzare un file PDF nel browser anziché la finestra di dialogo "Apri / Salva". Ora, sono bloccato cercando di visualizzare un documento di Word nel browser. Voglio visualizzare un documento Word in Firefox, IE7 +, Chrome ecc.

Qualcuno può aiutare? Ricevo sempre la finestra di dialogo "Apri / Salva" mentre visualizzo il documento Word nel browser. Voglio implementare questa funzionalità usando JavaScript.



puoi usare syncfusion-document-editor in reagire per mostrare e modificare i file docx
Yusuf Mohammad

Risposte:


225

Nessun browser attualmente dispone del codice necessario per il rendering dei documenti di Word e, per quanto ne so, non esistono attualmente librerie sul lato client per il rendering.

Tuttavia, se hai solo bisogno di visualizzare il documento Word, ma non è necessario modificarlo, puoi utilizzare il Visualizzatore di documenti Google tramite un <iframe>per visualizzare un host ospitato in remoto .doc/ .docx.

<iframe src="https://docs.google.com/gview?url=http://remote.url.tld/path/to/document.doc&embedded=true"></iframe>

Soluzione adattata da " Come visualizzare un documento di Word usando fancybox ".

Esempio:

JSFiddle

Tuttavia, se preferisci avere il supporto nativo, nella maggior parte, se non in tutti i browser, ti consiglio di salvare nuovamente il .doc/ .docxcome file PDF. Questi possono anche essere resi indipendentemente usando PDF.js da Mozilla.

Modificare:

Enorme grazie a fatbotdesigns per aver pubblicato il visualizzatore di Microsoft Office 365 nei commenti.

<iframe src='https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' width='1366px' height='623px' frameborder='0'>This is an embedded <a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank' href='http://office.com/webapps'>Office Online</a>.</iframe>

Un altro avvertimento importante da tenere a mente, come sottolineato da lightswitch05 , è che questo caricherà il tuo documento su un server di terze parti. Se ciò è inaccettabile, questo metodo di visualizzazione non è il modo corretto di agire.

Esempi dal vivo:

Visualizzatore di Google Documenti

Visualizzatore di Microsoft Office


2
@Pankaj Non è necessario caricarlo su Google Drive. Puoi semplicemente modificare il urlparametro nell'URL completo nel file .doc, ospitato sul tuo server o ovunque sia direttamente collegato. Google Documenti gestisce la conversione in un formato che può essere gestito al volo dal browser e non richiede che sia caricato o archiviato in Google Documenti, eseguendo invece una richiesta sul lato server per acquisire il file.
Brandon Anzaldi,

3
@Pankaj Anche se stai ospitando un server locale, Google non può accedervi localhost. Ha bisogno di un URL accessibile pubblicamente. È possibile utilizzare un servizio di spedizione di base come Finch .
Brandon Anzaldi,

11
Puoi anche utilizzare il visualizzatore di app live per ufficio: //view.officeapps.live.com/op/embed.aspx?src=your_url_here inserisci questo URL in un iframe
fatbotdesigns,

1
@BonifacePereira Se stai configurando una rete intranet, probabilmente dovrai fare una conversione localmente, dal momento che GDocs e Live dovrebbero entrambi recuperare il documento da qualche parte. Se puoi, potresti essere in grado di configurare un server per la conversione con OpenOffice o qualcosa del genere: stackoverflow.com/questions/5538584/…
Brandon Anzaldi,

18
Voglio solo sottolineare che entrambi questi metodi caricano definitivamente i file sui server di Google e Microsoft. Se hai a che fare con informazioni sensibili che dovrebbero avere un accesso limitato, non farlo. Utilizzare la soluzione alternativa con PDF.js per generare una versione PDF del file da visualizzare nel browser e offrire un collegamento per scaricare le varie versioni di Excel / Doc.
lightswitch05,

30

Le risposte di Brandon e fatbotdesigns sono entrambe corrette, ma avendo implementato l'anteprima dei documenti di Google, abbiamo trovato più file .docx che non potevano essere gestiti da Google. Passato all'anteprima di MS Office Online e funziona come un fascino.

La mia raccomandazione sarebbe di usare l'URL di anteprima di MS Office su Google.

https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' 

1
Ci sono restrizioni per usare questo? support.microsoft.com/en-us/help/2769380/…
Vishnu

per fornire una contro-narrativa - abbiamo scelto la versione di Google perché il renderer di Microsoft impiega molto più tempo a caricarsi sia in chrome che in ff
David Holiday

13

Sembra che ci siano alcune librerie js in grado di gestire .docx (non .doc) in conversione html lato client (in nessun ordine particolare):

Nota: se stai cercando il modo migliore per convertire un file doc / docx sul lato client, probabilmente la risposta è non farlo . Se hai davvero bisogno di farlo, fallo sul lato server, cioè con libreoffice in modalità senza testa , apache-poi (java) , pandoc o qualsiasi altra libreria che funzioni meglio per te.


1
Noterò che la mia biblioteca è completamente non mantenuta. È stato in grado di convertire i file docx in qualcosa che poteva essere renderizzato nel browser. Non so se questo è più vero.
artburkart

2

Penso di avere un'idea. Anche questo ha fatto il mio dado e ho ancora problemi a visualizzarlo in Chrome.

Salvare il documento (name.docx) in Word come pagina Web a file singolo (name.mht) nell'uso HTML

<iframe src= "name.mht" width="100%" height="800"> </iframe>

Modifica le altezze e le larghezze come meglio credi.


6
@guidomocha Non limitarti a commentarlo, fornisci un ragionamento sul perché questo è un cattivo approccio.
J. Louw,

2

ViewerJS è utile per visualizzare / incorporare il formato openoffice come odt, odp, ods e anche pdf.

Per incorporare documento openoffice / pdf

<iframe src = "/ViewerJS/#../demo/ohm2013.odp" width='700' height='550' allowfullscreen webkitallowfullscreen></iframe>

/ViewerJS/ è il percorso di ViewerJS

#../demo/ohm2013 è il percorso del tuo file che vuoi incorporare


Posso usare l'URL del link di aws s3
Vishnu il

No, fornisci solo link locale
NaveenDA,

1
Grazie per la tua risposta
Vishnu,

Purtroppo nel mio contesto i formati microsoft sono più diffusi.
Guettli,

1

Native Documents (in cui ho un interesse) crea un visualizzatore (e un editor) specifico per i documenti Word (sia i formati binari .doc legacy sia i moderni documenti docx). Lo fa senza conversione con perdita di dati in HTML. Ecco come iniziare https://github.com/NativeDocuments/nd-WordFileEditor/blob/master/README.md


2
Non ha informazioni sui prezzi. L '"Editor / visualizzatore di file di Word" è gratuito?
FiringBlanks

È un software commerciale, ma abbiamo un piano gratuito per startup / piccole imprese e per altri un piano gratuito soggetto a limiti di utilizzo. Pubblicheremo presto i dettagli.
JasonPlutext,

può essere eseguito su una singola pagina senza server, ad esempio su aws s3?
Graham Chiu,

lato server lo impacchettiamo come container Docker che dovresti eseguire da qualche parte (ad es. ECS). (In linea di principio potremmo eseguire un po 'di questo su Lambda, ma avresti comunque bisogno di un archivio di documenti persistente, forse S3)
JasonPlutext

3
@JasonPlutext Questo sembra interessante. Ma sarò schietto: sono disposto a pagare una piccola tassa ragionevole per un buon pacchetto o servizio - ma "invia le tue informazioni e ti faremo sapere quanto costa" è NO GO .
manassehkatz-Moving 2 Codidact

0

Se desideri preelaborare i tuoi file DOCX, invece di attendere fino al runtime, puoi prima convertirli in HTML utilizzando un'API di conversione di file come Zamzar . È possibile utilizzare l'API per convertire programmaticamente da DOCX in HMTL, salvare l'output sul server e quindi offrire tale HTML agli utenti finali.

La conversione è abbastanza semplice:

curl https://api.zamzar.com/v1/jobs \
-u API_KEY: \
-X POST \
-F "source_file=@my.docx" \
-F "target_format=html5"

Ciò eliminerebbe tutte le dipendenze di runtime dai servizi di Google e Microsoft (ad esempio se erano in calo o se eri limitato da loro).

Ha anche il vantaggio che potresti estendere ad altri tipi di file se lo desideri (PPTX, XLS, DOC ecc.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.