{"id":9,"date":"2006-01-12T17:19:00","date_gmt":"2006-01-12T17:19:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=9"},"modified":"2006-01-12T17:19:00","modified_gmt":"2006-01-12T17:19:00","slug":"mime4j-fur-ms-web-archive-mht","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2006\/01\/mime4j-fur-ms-web-archive-mht\/","title":{"rendered":"mime4j f\u00fcr MS-Web-Archive MHT"},"content":{"rendered":"<p>W\u00e4hrend Word und Excel beim Export einzelnde (mehr oder wenig sch\u00f6ne) XML-Dateien erzeugen (k\u00f6nnen), macht PPT das nicht: Es generiert entweder eine Sammlung von XML\/HTML\/GIF\/.. Dateien, oder packt alle Dateien in ein MHT-Datei. M\u00f6chte man diese Datei auseinandernehmen, kann man gut http:\/\/mime4j.sourceforge.net\/apidocs\/ nutzen, denn MS b\u00fcndelt die Dokumente wie eine MIME-EMail. Zun\u00e4chst ben\u00f6tigt man einen Handler:<\/p>\n<p>package TEST;<\/p>\n<p>import java.io.IOException;<br \/>import java.io.InputStream;<\/p>\n<p>import org.mime4j.BodyDescriptor;<br \/>import org.mime4j.SimpleContentHandler;<br \/>import org.mime4j.message.Header;<\/p>\n<p>public class MyHandler extends SimpleContentHandler<br \/>{<br \/>    @Override<br \/>    public void headers( Header header )<br \/>    {<br \/>        System.out.println( header );<br \/>    }<\/p>\n<p>    @Override<br \/>    public void bodyDecoded( BodyDescriptor bd, InputStream is ) throws IOException<br \/>    {<br \/>        System.out.println( bd );<br \/>    }<br \/>}<\/p>\n<p>Der macht jetzt nicht viel, man sieht aber das Prinzip.<\/p>\n<p>Der Quellcode des Parsers ist auch kurz:<\/p>\n<p>package TEST;<\/p>\n<p>import java.io.BufferedInputStream;<br \/>import java.io.FileInputStream;<br \/>import java.io.IOException;<\/p>\n<p>import org.mime4j.ContentHandler;<br \/>import org.mime4j.MimeStreamParser;<\/p>\n<p>public class Mime4J<br \/>{<br \/>    public static void main( String[] args ) throws IOException<br \/>    {<br \/>        ContentHandler handler = new MyHandler();<br \/>        MimeStreamParser parser = new MimeStreamParser();<br \/>        parser.setContentHandler( handler );<br \/>        parser.parse( new BufferedInputStream( new FileInputStream( &#8222;c:\/a.mht&#8220; ) ) );<br \/>    }<br \/>}<\/p>\n<p>Auf der Konsole folgen dann Ausgaben wie<\/p>\n<p>MIME-Version: 1.0<br \/>Content-Type: multipart\/related; boundary=&#8220;&#8212;-=_NextPart_01C617A0.DCEFFF40&#8243;<\/p>\n<p>Content-Location: file:\/\/\/C:\/EC2C4D01\/a.htm<br \/>Content-Transfer-Encoding: quoted-printable<br \/>Content-Type: text\/html; charset=&#8220;us-ascii&#8220;<\/p>\n<p>text\/html<br \/>Content-Location: file:\/\/\/C:\/EC2C4D01\/a-Dateien\/master29.htm<br \/>Content-Transfer-Encoding: quoted-printable<br \/>Content-Type: text\/html; charset=&#8220;us-ascii&#8220;<\/p>\n<p>text\/html<br \/>Content-Location: file:\/\/\/C:\/EC2C4D01\/a-Dateien\/master29.xml<br \/>Content-Transfer-Encoding: quoted-printable<br \/>Content-Type: text\/xml; charset=&#8220;utf-8&#8243;<\/p>\n<p>Ein Java-Programm (nicht quelloffen), was das schon alles macht &#8212; und f\u00fcr Mac\/Linux ganz spannend ist, ist unmhtml von http:\/\/www.joecheng.com\/code\/.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W\u00e4hrend Word und Excel beim Export einzelnde (mehr oder wenig sch\u00f6ne) XML-Dateien erzeugen (k\u00f6nnen), macht PPT das nicht: Es generiert entweder eine Sammlung von XML\/HTML\/GIF\/.. Dateien, oder packt alle Dateien in ein MHT-Datei. M\u00f6chte man diese Datei auseinandernehmen, kann man gut http:\/\/mime4j.sourceforge.net\/apidocs\/ nutzen, denn MS b\u00fcndelt die Dokumente wie eine MIME-EMail. Zun\u00e4chst ben\u00f6tigt man einen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[4],"tags":[],"class_list":["post-9","post","type-post","status-publish","format-standard","hentry","category-open-source"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/9\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=9"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=9"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}