कई टूल में एमएचटी फ़ाइल निर्यात करने का एक तरीका है। मैं उस फ़ाइल को फ़ाइलों के संग्रह, एक HTML फ़ाइल, प्रासंगिक छवियों और सीएसएस फ़ाइलों में परिवर्तित करने का एक तरीका चाहता हूं, जिसे मैं फिर वेबहोस्ट पर अपलोड कर सकता हूं और सभी ब्राउज़रों द्वारा उपभोग योग्य हो सकता हूं। क्या ऐसा करने के लिए कोई भी उपकरण या पुस्तकालय या एल्गोरिदम जानता है।आप प्रोग्रामेटिक रूप से (या किसी टूल के साथ) कैसे परिवर्तित कर सकते हैं .MHT mhtml फ़ाइलों को नियमित HTML और CSS फ़ाइलों में कनवर्ट करें?
उत्तर
ठीक है, आप आईई में एमएचटी फ़ाइल खोल सकते हैं और इसे एक वेब पेज के रूप में सहेज सकते हैं। मैंने इस पृष्ठ के साथ इसका परीक्षण किया, और भले ही यह आईई में अजीब लग रहा था (यह सब के बाद आईई है), यह सहेजा गया और फिर क्रोम में ठीक खोला गया (जैसा कि, ऐसा लगता है)।
उस विधि को छोड़कर, फ़ाइल को स्वयं देखकर, पाठ ब्लॉक फ़ाइल में सहेजे जाते हैं, और अन्य सभी सामग्री बेस 64 में सहेजी जाती है। सामग्री के प्रत्येक आइटम से पहले किया जाता है:
[Boundary]
Content-Type: [Mime Type]
Content-Transfer-Encoding: [Encoding Type]
Content-Location: [Full path of content]
कहाँ [माइम प्रकार], [एन्कोडिंग प्रकार], और [सामग्री की पूर्ण पथ] चर रहे हैं। [एन्कोडिंग प्रकार] या तो बेस 64 या उद्धृत-प्रिंट करने योग्य प्रतीत होता है। [सीमा] तो जैसे .mht फ़ाइल की शुरुआत में परिभाषित किया गया है:
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"
कि का उपयोग करना, आप अपने खुद के फ़ाइल पार्सर यदि आवश्यक हो तो बना सकता है।
तो आईई फिर एक फ़ोल्डर बनायेगा और छवियों को अलग से सहेज देगा आदि? मुझे आश्चर्य है कि क्या आप COM ऑब्जेक्ट के साथ ऐसा करने के लिए IE स्वचालित कर सकते हैं? – klumsy
हाँ, आईई सभी छवियों और क्या नहीं के साथ एक फ़ोल्डर बनाता है। COM ऑब्जेक्ट एक 'नेविगेट 2' फ़ंक्शन और ईवेंट हैंडलर (पूर्ण होने और इस तरह के लिए) दिखाता है, लेकिन मुझे इसके संदर्भ में एक सेव फ़ंक्शन नहीं मिला। इसका मतलब यह नहीं है कि यह वहां नहीं है, बस मुझे यह नहीं मिला। – XGundam05
मैंने इसके साथ खेला, और मैं इसे लोड कर सकता हूं, और इसे सहेजने के लिए स्वचालित कीप्रेस को हैक के रूप में सहेज सकता हूं, जो हैकी और नाजुक है। हालांकि यह इसे एमएचटी के रूप में सहेजना चाहता है और पूर्ण एचटीएमएल (पूरी साइट के रूप में ऑनलाइन साइट को सहेजना ठीक नहीं करता है), और मुझे विशिष्टता का कोई तरीका नहीं मिल रहा है जो ExecWB का उपयोग करके विकल्प के रूप में सहेजता है, तो शायद सबसे अच्छा काम करना होगा कोड के साथ एमएचटी को प्रोसेस करने पर काम करें, या सेलेनियम, या फोरफॉक्स या क्रोम स्वचालन या एक्सटेंशन या कुछ के साथ किसी अन्य प्रकार के स्वचालन की कोशिश करें .. – klumsy
मुझे लगता है कि @ XGundam05 सही है। यह है कि मैंने इसे काम करने के लिए क्या किया।
मैंने विजुअल स्टूडियो में एक विंडोज फॉर्म प्रोजेक्ट के साथ शुरुआत की। वेब ब्राउजर को फॉर्म में जोड़ा गया और फिर दो बटन जोड़े। फिर इस कोड:
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.ShowSaveAsDialog();
}
private void button2_Click(object sender, EventArgs e)
{
webBrowser1.Url = new Uri("localfile.mht");
}
आप इस कोड लेने के लिए और फ़ाइलों की एक सूची में जोड़ सकते हैं और एक foreach
साथ हर एक कार्रवाई करने के लिए सक्षम होना चाहिए। webBrowser
में ShowSaveAsDialog()
नामक एक विधि शामिल है; और यह किसी को .mht या केवल HTML या पूर्ण पृष्ठ के रूप में सहेजने की अनुमति देगा।
संपादित करें: आप वेब ब्राउजर दस्तावेज़ का उपयोग कर सकते हैं और इस बिंदु पर जानकारी को स्क्रैप कर सकते हैं। एक RichTextBox और प्रति यहाँ एमएस के रूप में एक सार्वजनिक चर जोड़ कर: 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
}
}
}
}
पर आपके छोटे समाधानों के बारे में एक छोटा LINQ कथन और यह http://stackoverflow.com/questions/872750/saving-a- वेब पेज-से-यानी-उपयोग-शक्तियां ऐसा लगता है कि सहेजने वाले संवाद के बिना यह संभव नहीं लगता है। मैं इस enmasse – klumsy
को स्वचालित करने में सक्षम होने की उम्मीद कर रहा था संपादन के साथ आप एचटीएमएल और छवियों को स्क्रैप और सहेजने की प्रक्रिया के साथ आ सकते हैं। – CaptainBli
तो स्वचालित आईई कठिन और अंत करने के लिए नहीं प्रयोग करने योग्य अंत था, तो मैं है कि यह जाने का रास्ता हो जाएगा कोड किसी प्रकार का निर्माण लगता है । GitHub पर मैं इस अजगर एक जो अच्छा
https://github.com/Modified/MHTifier http://decodecode.net/elitist/2013/01/mhtifier/
हो सकता है अगर मैं समय मैं PowerShell में इसी तरह कुछ करने के लिए कोशिश करता हूँ मिल गया।
IE और एमएस वर्ड के अलावा, वहाँ इस खुले स्रोत पार मंच कार्यक्रम SourceForge.net पर अधिक 'mht2html' कहा जाता है।
मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन ऐसा लगता है कि अच्छी समीक्षा मिली है।
पी।एस। ऐसे पुराने प्रश्न का उत्तर देने के लिए क्षमा करें।
एमएचटी फ़ाइल अनिवार्य रूप से एमआईएमई है। तो, चिलकट का उपयोग करना संभव है। माइम या पूरी तरह से मुक्त System.Net.Mime घटक इसकी आंतरिक संरचना तक पहुंचने के लिए। यदि, उदाहरण के लिए, एमएचटी में छवियां होती हैं, तो उन्हें आउटपुट एचटीएमएल में बेस 64 स्ट्रिंग्स के साथ प्रतिस्थापित किया जा सकता है।
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
यह प्रोग्रामिंग भाषा क्या है? –
यह वीबी.Net है। यह ओपन सोर्स पैकेज "फिजलर। सिस्टम। एचटीएमएलएगिलिटीपैक" और वाणिज्यिक पैकेज "चिलकट.मेम" का उपयोग करता है। लेकिन चिलकट को "System.Net.Mime" वर्ग द्वारा प्रतिस्थापित किया जा सकता है। – Zagavarr
फ़ायरफ़ॉक्स उपकरण एम्बेडेड गया है। मेनू पर जाएं (छिपा हुआ Alt दबाएं) File->Convert saved pages
।
चरण 1: ब्राउज़र में .MHT/.MHTML फ़ाइल खोलें।
चरण 2: स्रोत कोड देखने के लिए चयन करने के लिए राइट क्लिक करें।
चरण 3: स्रोत कोड कॉपी करें और इसे एक नई पर चिपकाएं .XT फ़ाइल, फिर फ़ाइल एक्सटेंशन को HTML में बदलें।
- 1. grunt.js के साथ HTML/CSS फ़ाइलों को कैसे सत्यापित करें?
- 2. कंपास विलय .css फ़ाइलों को विलय कर सकते हैं?
- 3. मैं स्वचालित रूप से सभी javadoc package.html फ़ाइलों को package-info.java फ़ाइलों में कैसे परिवर्तित करूं?
- 4. .tt .doc .ods फ़ाइलों को .txt फ़ाइलों में कनवर्ट करें
- 5. केवल HTML और/या CSS
- 6. आप संख्यात्मक रूप से फ़ाइलों को कैसे क्रमबद्ध करते हैं?
- 7. कैसे एसईओ के अनुकूल है CSS और JS फ़ाइलों
- 8. मैं कैसे स्वचालित रूप से सभी MP4 फ़ाइलों FLV करने के लिए ffmpeg के साथ परिवर्तित कर सकते हैं?
- 9. साझा फ़ाइलों को प्रोग्रामेटिक रूप से बंद करें
- 10. कैश CSS और JS फ़ाइलों
- 11. wmf फ़ाइलों को svg फ़ाइलों में कनवर्ट करने के लिए कैसे करें
- 12. प्रोग्रामेटिक रूप से csproj फ़ाइलों को संशोधित करें
- 13. HTML या CSS
- 14. आप aspnet_compiler के साथ बहिष्कृत फ़ाइलों को कैसे संभालते हैं?
- 15. क्या आप प्रोग्राम-आधारित सर्विसिंग (विश्वसनीय इंस्टॉलर) के साथ प्रोग्रामेटिक रूप से बातचीत कर सकते हैं?
- 16. टिफ़ फ़ाइलों को पीडीएफ में कनवर्ट करने के लिए नि: शुल्क टूल या लाइब्रेरी .Net
- 17. Log4Net स्वचालित रूप से लॉग फ़ाइलों को हटा सकते हैं?
- 18. क्या gulp-usemin एकाधिक फ़ाइलों को स्वीकार कर सकते हैं?
- 19. आप सी में संसाधन फ़ाइलों को कैसे एम्बेड करते हैं?
- 20. मर्ज करने के बाद .orig फ़ाइलों को छोड़ने से आप कैसे कर सकते हैं?
- 21. फ़ाइलों या मुख्य HTML में सीएसएस और जावास्क्रिप्ट रखें?
- 22. ग्रहण को किसी विधि में कनवर्ट/रीफैक्टर कर सकते हैं?
- 23. किसी प्रोग्राम के साथ प्रोग्रामेटिक रूप से कैसे बातचीत करें
- 24. घर निर्देशिका में .retry फ़ाइलों को बनाने से आप Ansible को कैसे रोक सकते हैं?
- 25. मैं कैसे परिवर्तित कर सकते हैं जावा
- 26. दो exe फ़ाइलों को एक प्रोग्रामेटिक रूप से
- 27. जावा से सी # को किसी उपकरण के साथ कनवर्ट करें, या मैन्युअल रूप से?
- 28. क्या स्थिर HTML और CSS फ़ाइलों में Vue.js टेम्पलेट्स को संकलित करना संभव है?
- 29. XPath या CSS तेजी से पार्सिंग (HTML फ़ाइलों पर नोकोगिरी के लिए)?
- 30. जार फ़ाइलों से प्लग-इन और टुकड़े प्रोग्रामेटिक रूप से आयात करने के लिए कैसे करें
आप किस प्रोग्रामिंग भाषा का उपयोग करना चाहते थे? –