2013-02-12 21 views
11

Sto cercando un modo per convertire il testo HTML in stringa RTF. C'è qualche libreria che fa questo lavoro. Ottengo il contenuto HTML in modo dinamico nel mio progetto e ho bisogno di renderlo in formato RTF. Sto usando un parser HTML per convertire il testo HTML in una stringa normale e poi ho provato a usare PyRTF per la conversione in formato RTF. C'è un modo migliore che questo possa essere fatto. Grazie in anticipo.HTML in stringa RTF utilizzando Python

+1

Hai visto questo? http://pypi.python.org/pypi/zopyx.convert2 –

risposta

2

RTF sembra un formato rischioso da convertire da/a. Ho provato a tagliare e incollare tra le applicazioni su Mac OS X, ad esempio, dove RTF è una specie di lingua franca. Alcune di queste app sono app Microsoft (rilevante in quanto RTF è un formato sviluppato da Microsoft), altre no. Anche le informazioni di formattazione di base come la dimensione del carattere, il carattere, l'interlinea e lo stile dell'elenco (ordinato o non ordinato) vengono confuse quando si copia da un'applicazione apparentemente in formato RTF a un'altra. In poche parole, è un casino.

Ho cercato modi per leggere, scrivere e trasformare a livello di codice RTF, preferibilmente da Python. Ho trovato un certo numero di pacchetti su PyPI, provarli è stata un'esperienza deludente. Supporteranno RTF 1.5, ad esempio, quando la versione corrente è 1.9.1. L'RTF è in circolazione da molto tempo, ma una specifica vintage del 2005 non è molto recente. C'erano un sacco di trucchi e incompatibilità. MOLTE.

Ora, non sto dicendo che è impossibile, o che non ci sono altre librerie là fuori che farebbero il trucco. Io ho non provato il zopyx.convert menzionato da altri qui, per esempio. Forse è grandioso. Ma guardando le sue dipendenze - Java, FOP, ecc. - sembra una toolchain piuttosto complessa (e quindi probabilmente fragile). Ho letto its code on github e il Python è davvero solo lì come un rivestimento di coordinamento. Organizza strumenti esterni XFC, XINC, FOP e PrinceXML - tre dei quattro sono software commerciali. Ciò include la parte chiave XFC che si occupa di RTF. Colpiscimi di scettico.

Ci sono due convertitori che ho trovato vale la pena dare un'occhiata: se stai usando un Mac, il programma della riga di comando textutil è in realtà uno degli strumenti migliori e più semplici che ho visto.

textutil -convert html filename.rtf -output filename.html 

L'altro motore di formattazione che vale la pena prendere in considerazione è LibreOffice. È gratuito, open source, ragionevolmente adatto all'automazione e una base decente come hub di interoperabilità. Non è solo una supposizione; Ho costruito flussi di lavoro di documenti complessi e multiformi attorno ad esso.

Mi chiederei perché stai cercando di entrare in RTF. Sembra un formato di documento da cui vorresti sfuggire. Ma se hai bisogno di andare lì, textutil e LibreOffice sono i meccanismi meno peggio che ho trovato.

+0

Hey Jonathon, ti ricordi come stavi usando LibreOffice per fare la formattazione? Ad esempio, su una riga di comando di Windows 7 provo il seguente comando: "soffice.exe" -headless -convert-to rtf: "Rich Text Format" C: \ Hello_world.html ma non succede nulla ... – sager89

+0

L'invocazione che Io uso (su MacOS X) è 'soffice --headless - invisible --convert-to rtf test.html'. Non penso che sia richiesto '- invisibile', solo un'opzione" essere meno visibile ". Quindi sembra che il problema sia che hai bisogno di prefissi opzione doppio-trattino (probabile), e/o del tuo ':" Rich Text Format "' addendum alla specifica di formato 'rtf'. Prova: '" soffice.exe "--headless --convert-to rtf C: \ Hello_world.html' –

+0

Per Windows, a quanto pare si suppone di utilizzare solo un trattino. Non ho nemmeno utilizzato il root drive, volevo solo un breve percorso per semplicità in questo esempio. Quello che ho fatto per risolvere questo problema è stato usare basic visual e la risposta qui http://stackoverflow.com/questions/150208/how-do-i-convert-html-to-rtf-rich-text-in- net-senza-pagare-per-un-componente – sager89

0

Vedo che questa domanda ha più di un anno, ma ho pensato di contribuire comunque. Recentemente ho avuto un requisito simile e sono passato a PyRTF, un piccolo ma potente modulo Python in grado di costruire documenti RTF da un file di testo. È possibile utilizzare Beautiful Soup per analizzare l'HTML, risalire il tag dell'albero di analisi per tag e utilizzare l'API PyRTF per costruire oggetti appropriati (tabella, cella, paragrafo, sezione o documento).

L'API stessa è piuttosto granulare e consente un sacco di formattazione personalizzata (testo del carattere, allineamento, colore, intestazioni, piè di pagina, ecc.)

Spero che questo aiuti.