2013-01-24 97 views
7

Le persone che inviano contenuti al mio sito Web utilizzano Word, quindi ottengo molti documenti di Word per convertirli in HTML. Voglio conservare solo la formattazione di base: titoli, elenchi ed enfasi: nessuna immagine.Da MS Word o Libre Office per pulire HTML

Quando li converto con Libre Office "Salva come HTML", i file risultanti sono enormi, ad esempio un file doc di 112K diventa HTML 450K, la maggior parte dei tag inutili FONT e SPAN (per qualche motivo, ogni singolo il segno di punteggiatura è racchiuso nel suo stesso intervallo!).

Ho provato questo script: http://www.techrepublic.com/blog/opensource/how-to-convert-doc-and-odf-files-to-clean-and-lean-html/3708 basato su ordinato e sed, e ha ridotto le dimensioni a circa 150 K, ma ci sono ancora molti SPAN inutili.

Ho provato a copiare e incollare in Kompozer - un editor HTML, e quindi salvare come HTML; ma ha convertito tutte le mie lettere non latine (ebraiche) in entità come "ְ", che ha aumentato la dimensione a 750K!

ho cercato docvert: https://github.com/holloway/docvert/issues/6 ma scoperto che richiede una libreria python che richiede un altro biblioteche, ecc, che sembra come un percorso senza fine di dipendenze ...

c'è un modo semplice per tenere pulita HTML dai documenti di Office?

+0

Questo è probabilmente un duplicato: http://stackoverflow.com/questions/67964/what-is-the-best-free-way-to-clean-up-word-html/1813798#1813798 –

risposta

0

Nella tua situazione, potrebbe essere necessario andare riga per riga per convertire le parti principali della tua parola doc, quindi tornare indietro e ripulire eventuali tag aggiuntivi. Se non ti dispiace questo approccio, quindi prendere in considerazione questa soluzione ...

  1. Dopo aver salvato il documento Word come una pagina web, aprire la stessa pagina web in Notepad ++.
  2. quindi utilizzare la funzione di sostituzione per il documento
  3. All'interno della casella Trova, digitare < [^>] +>
  4. Nel modo di ricerca per questa stessa finestra , selezionare "espressioni regolari"

Ora tutto ciò che devi fare da quel punto è fare clic su Trova successivo fino ad arrivare ai tag che vuoi sostituire e quindi fare clic su Sostituisci per ogni tag che deve essere sostituito. Assicurati che la casella "Sostituisci con:" sia vuota.

Non so se c'è un modo più conveniente, ma in questo modo è 100% gratuito e semplice per l'elaborazione di pulitura dei tag HTML tramite Notepad ++.

Per quanto riguarda la conversione in linea stili di CSS esterno (che vi consiglio come il secondo processo dopo la sostituzione tag non necessari), provare questa applicazione ... http://inlinecssextractor.com/home.html

Buona fortuna

+0

Utilizzo di Notepad ++ potrebbe essere una soluzione per un singolo documento, tuttavia, dal momento che ho nuovi documenti in arrivo ogni settimana, non voglio ripetere le stesse sostituzioni ancora e ancora per ogni documento ... –

0

ho trovato questi due pulitori abbastanza efficaci. In primo luogo, ho eseguito la parola html filtrata attraverso

http://textism.com/wordcleaner/

Poi ho usato alcune espressioni regolari per convertire alcuni elementi paragrafo puntato a elenchi (LI). Poi mi sono imbattuto il risultato attraverso

http://infohound.net/tidy/

per avvolgere le voci di elenco con lista non ordinata (UL) tag e ripulire altri errori. Sono stato molto contento del risultato che è passato da 1.5M a 225k.

0

Stavo usando http://word2cleanhtml.com/ fino a quando ho capito che MS Word offre l'opzione per salvare il documento in formato HTML.

Selezionando questo, il file .docx diventa .html ed è la migliore versione html di un documento word che ho visto. È sicuramente migliore di tutti questi strumenti online.

1

Mi rendo conto che questa domanda è vecchia ma le altre risposte non hanno mai risposto alla domanda. Se non si è avversa a scrivere del codice PHP, il CubicleSoft ultimo Web Scraper Toolkit ha una classe chiamata TagFilter:

https://github.com/cubiclesoft/ultimate-web-scraper/blob/master/support/tag_filter.php

si passa in due cose: Una serie di opzioni ei dati per analizzare come HTML.

Per ripulire l'HTML danneggiato, le opzioni predefinite di TagFilter :: GetHTMLOptions() fungeranno da buon punto di partenza. Queste opzioni costituiscono la base di un contenuto HTML valido e, facendo nient'altro, puliscono tutti i dati di input in qualcosa che un altro strumento come Simple HTML DOM può analizzare correttamente in un modello DOM.

Tuttavia, l'altro modo per utilizzare la classe è modificare le opzioni predefinite e aggiungere un'opzione di "callback" all'array delle opzioni. Per ogni tag nel codice HTML, verrà richiamata la funzione di callback specificata. Il callback dovrebbe restituire cosa fare con ogni tag, che è il punto in cui entra in gioco la vera potenza di TagFilter. Puoi mantenere un determinato tag e alcuni o tutti i suoi attributi (o modificarli), eliminare il tag ma mantenere il contenuto interno, mantenere il tag ma eliminare il contenuto, modificare il contenuto (per la chiusura dei tag) o sbarazzarsi sia del tag che del contenuto interno. Questo approccio consente un controllo estremamente raffinato sull'HTML più complicato e elabora l'input in un singolo passaggio. Vedere la suite di test dello stesso repository, ad esempio l'utilizzo di TagFilter.

L'unico svantaggio è che il callback deve tenere traccia di dove si trova tra ogni chiamata mentre qualcosa come Simple HTML DOM seleziona le cose in base a un modello simile a DOM. Ma questo è solo un inconveniente se il documento in fase di elaborazione ha cose come 'id e' classe '... la maggior parte dei contenuti HTML di Word/Libre non lo fa, il che significa che è un gigantesco blob di HTML non riconoscibile/non analizzabile fino agli strumenti di elaborazione DOM partire.

0

Ecco un set di script di PowerShell che puliscono HTML con filtro di parole e taggano correttamente super/subscript circa il 95% delle volte. (No, non si può ottenere di meglio, Word è fatto per la stampa.)

https://github.com/suzumakes/replaceit

istruzioni ci sono nel Leggimi e se vi capita di incontrare tutti i caratteri aggiuntivi che devono essere catturati o venire con eventuali ritocchi/miglioramenti, sarei felice di vedere la tua richiesta di pull.

0

ophir.php fa un ottimo lavoro per rendere pulito l'HTML dai file .odt. Hai bisogno di un ambiente di hosting PHP per eseguirlo.