txt texto reproducir mht imprimir guardar extensión extension documento descargar convertir con como code clean archivos archivo abrir html converter mhtml

texto - txt to html



¿Cómo puede usted programar(o con una herramienta) convertir archivos.MHT mhtml a archivos HTML y CSS normales? (7)

Muchas herramientas tienen una forma de exportar un archivo .MHT. Quiero una forma de convertir ese archivo único en una colección de archivos, un archivo HTML, las imágenes relevantes y los archivos CSS, que luego podría cargar en un host web y ser consumible por todos los navegadores. ¿Alguien sabe alguna herramienta o biblioteca o algoritmos para hacer esto?


Además de IE y MS Word, hay un programa multiplataforma de código abierto llamado ''mht2html'' escrito por primera vez en 2007 y actualizado por última vez en 2016 . Tiene una interfaz gráfica de usuario y una interfaz de terminal.

No lo he probado todavía, pero parece que ha recibido buenas críticas.



Bueno, puede abrir el archivo .MHT en IE y Guardar como una página web. Probé esto con esta página, y aunque parecía extraño en IE (después de todo es IE), se guardó y luego se abrió bien en Chrome (como en, parecía que debería).

Salvo ese método, mirando el archivo en sí, los bloques de texto se guardan en el archivo tal como está, y todo el contenido se guarda en Base64. Cada elemento de contenido está precedido por:

[Boundary] Content-Type: [Mime Type] Content-Transfer-Encoding: [Encoding Type] Content-Location: [Full path of content]

Donde [Variable] , [Tipo de codificación] y [Ruta de acceso completa del contenido] son variables. [Tipo de codificación] parece ser base64 o imprimible entre comillas . [Límite] se define al principio del archivo .MHT de la siguiente manera:

From: <Saved by WebKit> Subject: converter - How can you programmatically (or with a tool) convert .MHT mhtml files to regular HTML and CSS files? - Stack Overflow Date: Fri, 9 May 2013 13:53:36 -0400 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0C08_58653ABB.B67612B7"

Usando eso, podrías hacer tu propio analizador de archivos si es necesario.


Creo que @ XGundam05 es correcto. Aquí está lo que hice para que funcione.

Comencé con un proyecto de Windows Form en Visual Studio. Agregó el WebBrowser al formulario y luego agregó dos botones. Entonces este código:

private void button1_Click(object sender, EventArgs e) { webBrowser1.ShowSaveAsDialog(); } private void button2_Click(object sender, EventArgs e) { webBrowser1.Url = new Uri("localfile.mht"); }

Debería poder tomar este código y agregar una lista de archivos y procesar cada uno con un foreach . El webBrowser contiene un método llamado ShowSaveAsDialog() ; Y esto le permitirá a uno guardar como .mht o solo el html o la página completa.

EDITAR: Puede usar el documento de WebBrowser y raspar la información en este punto. Agregando un richTextBox y una variable pública según MS aquí: http://msdn.microsoft.com/en-us/library/ms171713.aspx

public string Code { get { if (richTextBox1.Text != null) { return (richTextBox1.Text); } else { return (""); } } set { richTextBox1.Text = value; } } private void button2_Click(object sender, EventArgs e) { webBrowser1.Url = new Uri("localfile.mht"); HtmlElement elem; if (webBrowser1.Document != null) { HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML"); if (elems.Count == 1) { elem = elems[0]; Code = elem.OuterHtml; foreach (HtmlElement elem1 in elems) { //look for pictures to save } } } }


El archivo MHT es esencialmente MIME. Por lo tanto, es posible usar Chilkat.Mime o componentes System.Net.Mime completamente gratis para acceder a su estructura interna. Si, por ejemplo, MHT contiene imágenes, se pueden reemplazar con cadenas base64 en el HTML de salida.

Imports HtmlAgilityPack Imports Fizzler.Systems.HtmlAgilityPack Imports Chilkat Public Function ConvertMhtToHtml(ByVal mhtFile As String) As String Dim chilkatWholeMime As New Chilkat.Mime ''Load mime'' chilkatWholeMime.LoadMimeFile(mhtFile) ''Get html string, which is 1-st part of mime'' Dim html As String = chilkatWholeMime.GetPart(0).GetBodyDecoded ''Create collection for storing url of images and theirs base64 representations'' Dim allImages As New Specialized.NameValueCollection ''Iterate through mime parts'' For i = 1 To chilkatWholeMime.NumParts - 1 Dim m As Chilkat.Mime = chilkatWholeMime.GetPart(i) ''See if it is image'' If m.IsImage AndAlso m.Encoding = "base64" Then allImages.Add(m.GetHeaderField("Content-Location"), "data:" + m.ContentType + ";base64," + m.GetBodyEncoded) End If : m.Dispose() Next : chilkatWholeMime.Dispose() ''Now it is time to replace the source attribute of all images in HTML with dataURI'' Dim htmlDoc As New HtmlDocument : htmlDoc.LoadHtml(html) : Dim docNode As HtmlNode = htmlDoc.DocumentNode For i = 0 To allImages.Count - 1 ''Select all images, whose src attribute is equal to saved URL'' Dim keyURL As String = allImages.GetKey(i) ''Saved url from MHT'' Dim elementsWithPics() As HtmlNode = docNode.QuerySelectorAll("img[src=''" + keyURL + "'']").ToArray Dim imgsrc As String = allImages.GetValues(i)(0) ''dataURI as base64 string'' For j = 0 To elementsWithPics.Length - 1 elementsWithPics(j).SetAttributeValue("src", imgsrc) Next ''Select all elements, whose style attribute contains saved URL'' elementsWithPics = docNode.QuerySelectorAll("[style~=''" + keyURL + "'']").ToArray For j = 0 To elementsWithPics.Length - 1 ''Get and modify style'' Dim modStyle As String = Strings.Replace(elementsWithPics(j).GetAttributeValue("style", String.Empty), keyURL, imgsrc, 1, 1, 1) elementsWithPics(j).SetAttributeValue("style", modStyle) Next : Erase elementsWithPics Next ''Get final html'' Dim tw As New StringWriter() htmlDoc.Save(tw) : html = tw.ToString : tw.Close() : tw.Dispose() Return html End Function


Paso 1: Abra el archivo .MHT / .MHTML en el navegador.

Paso 2: Haga clic derecho para seleccionar para ver el código fuente.

Paso 3: Copie el código fuente y péguelo en un nuevo archivo .TXT, luego cambie la extensión del archivo a .HTML.


Firefox tiene una herramienta integrada. Vaya al menú (presione Alt si está oculto) File->Convert saved pages .