Показать полную графическую версию : [решено] Преобразовать *.html в *.mht
Имеется файл Help.html и папка misc к нему, нужно преобразовать их в файл Help.mht. Можно ли это сделать из бат файла? Доп. утилиты допустимы.
gora, категория «CMD/BAT», но на всякий случай осведомлюсь: нечто подобное на WSH (Серый форум / JScript: Пример сохранения web-страницы в TXT, HTML и MHT (веб-архив) (http://forum.script-coding.com/viewtopic.php?pid=6245#p6245)) или скомпилированный AutoIt ([решено] Сохранение загруженной html-страницы (http://forum.oszone.net/post-1124597-5.html)) [код, в принципе, тот же, и требование на наличие установленного CDO, либо из комплекта MS Office, либо отдельным компонентом, тоже остаётся] не подойдёт в Вашем случае?
есть вариант на AutoIT (http://www.autoitscript.com/forum/index.php?showtopic=77894) c использованием ADO, если перевести на VBS:
FileIn = Wscript.arguments.Item(0)
FileOut = Wscript.arguments.Item(1)
INetGetMHT FileIn, FileOut
Sub INetGetMHT (strURL, strFile)
Dim objMsg, objAdo
Set objMsg = CreateObject("CDO.Message")
Set objAdo = CreateObject("ADODB.Stream")
objAdo.Type = 2
objAdo.CharSet = "US-ASCII"
objAdo.Open
objMsg.CreateMHTMLBody strURL, 0
objMsg.DataSource.SaveToObject objAdo, "_Stream"
objAdo.SaveToFile strFile, 1
End Sub
CScript //NoLogo HTM2MHT.VBS C:\TEST\Test.htm C:\TEST\Test.mht
З.Ы. на sourceforge есть отличная утилита HTML to MHT converter (http://sourceforge.net/projects/html2mht/), но к сожалению, она не поддерживает командную строку... в принципе, несложно переделать исходник - достаточно переписать MAIN(), но увы - возможностей VC Express Edition для этого не хватает - требуется поддержка ATL, которая доступна только в Standard Edition... :(
есть отличная утилита HTML to MHT converter, »
Кстати в коде есть ошибка
string locationFromPath(const char *file)
{
char *f=strdup(file);
char *p=f;
for(char *p=f; p<strlen(f)+f; p++)
for(p=f; p<strlen(f)+f; p++)
//...
}
возможностей VC Express Edition для этого не хватает »
А так запускается и в VC9EE.
P.S.
Если чего-то при переделки не будет хватать, можно ведь воспользоваться второй бетой профессиональной редакции VC2010 (http://forum.oszone.net/thread-153855.html).
А так запускается и в VC9EE »
странно, а у меня ругается на отсутствие "<atlenc.h>" (из stdafx.h), а при удалении сыпятся ошибки... :o
можно ведь воспользоваться второй бетой профессиональной редакции VC2010. »если только для себя, выкладывать скомпилированные EXE, наверное, уже будет нарушением
amel27, виноват, нажал отрыть файл atlenc.h он мне открыл его из Microsoft Visual Studio 10.0\VC\atlmfc\include
Забыл что переменная include общее на компе. VC2010 Pro Beta2 наверное лучше снести, дабы не вводить людей в заблуждение.
Видимо да.
Кстати есть ATL Server Library and Tools (http://atlserver.codeplex.com/), да вот atlenc.h там не значится, он остаётся за MS.
Здравствуйте!
Я вот пробовал разные конвертеры из HTM в MHT, и все они не сохраняют картинки. Реально получается конвертировать только браузером Опера сохраняя файл в другом формате.
А не подскажет ли кто реально работающий конвертер, который бы при конвертации сохранял и картинки?
Спасибо.
AlexLev, скриптами — второй и третий посты этой темы.
AlexLev, а я вот никак не могу отучить ту же Оперу настойчиво предлагать сохранение в этот дурацкий (имхо, есс-но) формат! Ведь его размер БОЛЬШЕ суммарного размера всех сохраняемых файлов. Посему я сохраняю файл с картинками, вырубаю из HTМ ненужные счетчики, скрипты, рекламу и прочую гадость, привожу файл в читабельный вид и сохраняю (htm2chm рулит!) в компактном CHM или ITS формате. Даже .swf, если их правильно описать ;), htm2chm v.3.x сохраняет правильно.
Solder, благодарю за отклик! Если Вы сможете в тексте обойтись без плохих слов, то и Ваша голова будет чище, а это положительным образом скажется на Вашем здоровье и тех, кто читает Вами написанное...
Сейчас компьютеры стали уже мощнее и размер файлов не столь принципиален, зачастую важнее сколько времени потрачено на обработку. Я всегда сохраняю в MHT, мне это удобно.
Иной раз, как мне сейчас, требуется конвертация чужих файлов. Я попробовал VBS-скрипт, но он у меня не заработал, наверно надо ставить ADO?
Дальнейшие эксперименты с VBS-скриптом показали, что он может конвертировать интернет страницу, но не готовый файл...
Я попробовал VBS-скрипт, но он у меня не заработал, наверно надо ставить ADO? »
Есть подозрение, что у Вас нет CDO: Download Collaboration Data Objects, version 1.2.1 from Official Microsoft Download Center (http://www.microsoft.com/en-us/download/details.aspx?id=3671).
Дальнейшие эксперименты с VBS-скриптом показали, что он может конвертировать интернет страницу, но не готовый файл... »
Это как?
Поправил ссылку в сообщении (http://forum.oszone.net/post-1276964.html#post1276964), дабы она указывала на новый, правильный, домен.
Iska, я попробовал установить Download Collaboration Data Objects; но при попытке установки вывелась ошибка "Collaboration Data Objects 1.2.1 cannot be installed unless Microsoft Office Outlook 2007 is also installed.".
Надо сказать, что на компьютере стоит Windows XP и Microsoft Office 2003.
По поводу экспериментов, - модифицированный код скрипта (фрагмент, выделение типа PHP для наглядности):
objMsg.CreateMHTMLBody "http://www.yandex.ru", 0
objMsg.DataSource.SaveToObject objAdo, "_Stream"
objAdo.SaveToFile "2222.mht", 1
// работает
objMsg.CreateMHTMLBody "1111.html", 0
objMsg.DataSource.SaveToObject objAdo, "_Stream"
objAdo.SaveToFile "2222.mht", 1
// НЕ работает
Надо сказать, что на компьютере стоит … Microsoft Office 2003. »
Тогда библиотека CDO у Вас есть.
AlexLev, упакуйте в архив и выкладывайте «1111.html» сюда.
Вот сделал, только с другого компьютера: Windows 7, Microsoft Office 2003.
Ошибка: Указанный протокол неизвестен.
Код: 800C000D
Источник: CDO.Message!
ругается на строку objMsg.CreateMHTMLBody "1111.html", 0
Ссылка на файл вложения:
http://yadi.sk/d/JGTqFtay3nlW0
По ходу вопрос: Почему-то этот файл не удалось подключить через систему сайта, ошибка "Превышает выделенный вам объем вложений на 964.3 Kb.". Хотя для ZIP указан лимит 8 МБ...
AlexLev, никаких проблем:
Option Explicit
Const cdoSuppressNone = 0 ' загружать все
Const cdoSuppressImages = 1 ' не загружать картинки
Const cdoSuppressBGSounds = 2 ' не загружать фоновые звуки
Const cdoSuppressFrames = 4 ' не загружать фреймы
Const cdoSuppressObjects = 8 ' не загружать объекты
Const cdoSuppressStyleSheets = 16 ' не загружать таблицы стилей
Const cdoSuppressAll = 31 ' не загружать ничего из вышеперечисленного
With WScript.CreateObject("CDO.Message")
.AutoGenerateTextBody = True
.CreateMHTMLBody "file://E:\Песочница\0239\Вложение\1111.html", cdoSuppressNone
.BodyPart.GetStream().SaveToFile "E:\Песочница\0239\Вложение\1111.mht", 2
End With
WScript.Quit 0
Файл был создан:
╔══════════════ E:\Песочница\0239\Вложение ════════╤═════╗
║и Имя │Размер│ Дата │Время║
║⌂.. │ Вверх│05.04.13│03:40║
║├1111_files │ Папка│04.04.13│22:24║
║ 1111 html│150346│04.04.13│22:20║
║ 1111 mht│3962 К│05.04.13│03:40║
║ │ │ │ ║
Iska, благодарю!
Сама логика скрипта мне очень нравится, возможности его настройки.
Но вот почему-то на моём компьютере оно не работает как хотелось бы (в данном случае я опять на Windows XP).
Результат загружается очень быстро, но без картинок! Размер файла разнится с Вашим.
Попутно может кто ответит на вопрос, почему Zip-файл не могу на сайт положить?...
Вложение 2 (http://yadi.sk/d/dX9RUve33o1Wf)
Результат загружается очень быстро, но без картинок! »
У меня аналогично: из {background:url(…)} изображения не сохраняются.
Iska, я напомню, что 2-го числа на мой вопрос "... пробовал разные конвертеры из HTM в MHT, и все они не сохраняют картинки...", Вы ответили, что "... скриптами — второй и третий посты этой темы.".
Так что теперь получается, скрипты тоже не могут выполнить эту функцию?
AlexLev, эта ошибка (несохранение изображения, указанного в стиле в качестве подложки) содержится в самой функции сохранения в *.mht средствами IE/CDO. Не думаю, что опробованные Вами конвертеры реализуют какую-то свою функцию сохранения. Потому такой вот результат.
Вам просто следовало переместить акцент, вместо:
и все они не сохраняют картинки... »
сказать «они сохраняют не все изображения», тогда бы не возникло недопонимания.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.