Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式生成.mht文件_C#_Mhtml - Fatal编程技术网

C# 以编程方式生成.mht文件

C# 以编程方式生成.mht文件,c#,mhtml,C#,Mhtml,有人知道如何用C#以编程方式生成.mht文件吗 嵌入图像吗?问题是我已经意识到.mht文件 能够在其中嵌入图像,并且该嵌入图像 当您更改整个文件(mht)的位置时,它将随该文件一起移动。及 此文件可以在不同的浏览器上查看,包括IE 6 我被告知尝试数据Url方案技术。但它无法工作,因为 其他浏览器不支持它。e、 g IE 6.我会从开始,这样我就对我的工作有了一些基本的了解。那就去找那笔交易吧 据我所知,没有BCL类可以处理MHTML。这是可能的,而且肯定是由其他人完成的-相关资料和库/源代码:

有人知道如何用C#以编程方式生成.mht文件吗 嵌入图像吗?问题是我已经意识到.mht文件 能够在其中嵌入图像,并且该嵌入图像 当您更改整个文件(mht)的位置时,它将随该文件一起移动。及 此文件可以在不同的浏览器上查看,包括IE 6

我被告知尝试数据Url方案技术。但它无法工作,因为 其他浏览器不支持它。e、 g IE 6.

我会从开始,这样我就对我的工作有了一些基本的了解。那就去找那笔交易吧


据我所知,没有BCL类可以处理MHTML。

这是可能的,而且肯定是由其他人完成的-相关资料和库/源代码:

  • 是MHT格式
  • 的基础
  • (商业)
  • (商业)
  • Message.COM组件,它公开

在Windows环境中,您可以通过公开
我不知道在C#中导入COM对象的细节,因此我将用类似C的语法为您提供一个快速示例:

IMsgObj = CreateObject("CDO.Message")   // create the object
IMsgObj.CreateMHTMLBody("http://www.example.com/") // convert the URL to MHTML
IMsgObj.GetStream().SaveToFile("output.mht")  // save it to a file
CDO.Message组件的CLSID为{CD000001-8B95-11D1-82DB-00C04FB1625D}


请记住,该组件用于生成电子邮件(.eml文件扩展名而不是.mht),这意味着不包括JavaScript文件。否则,它们大致相当。

(2011年6月)关于如何使用CDO和System.Net.Mail创建MHT文件。C#源代码包含在完整的文档中。我会在VB.Net或Google代码版本上使用此选项。

我曾经去过那里——虽然很可能做到这一点,甚至可以自己编写——不要去那里。MHT是非常专有的,大多数现代浏览器都不支持它。我会首先研究替代方案我认为最简单的方法是用IE将一些简单的网页保存为.mht,然后看看它是如何做到的。我尝试在IE上导出.mht文件。它似乎实现了数据Url方案技术。例如,如果在导出的文件(mht)中发现以下代码内容类型:图像/gif内容传输编码:base64内容位置:R0LGodlHgEUAFCAAAAAAAAAAAAAAAAAAGAACAGMDAWMDCCWKBK8AIAAGABRWAABQSRVQ0V BJSARTSACG3TYC6BBVDXFWOA1WDR1PKIDTTRAMCPTYX0MQVPTA5FDXHLSW9QBZNHVS9OYXZRydseVQABFkBZFNhH2BlaQcWigYWrg46kwc6qzg8lSo4tQAczgU20gg15Cc10QJFkhNMtABqngBu@chosenOneThabsMHT基于RFC 2557-请参阅下面的答案…我尝试了上面的方法。似乎他们能够将html文件转换为mht。如果从web访问html文件,则此操作有效。但是如果您从本地驱动器访问html文件,那么转换将不起作用。上述来源使用了此方法:CreateMHTMLBody(URL,CDO.CdoMHTMLFlags.cdoSuppressNone,“,”);我之所以尝试在html文件中嵌入图像,是因为我正在创建一个windows窗体应用程序,该应用程序必须导出带有图像的报表。有没有一种方法可以不使用商业库而实现呢?@Chosenonethab没有使用商业库的唯一方法就是自己实现完整的格式(只是部分记录)。哦,我最终决定使用Visual studio的ReportViewer控件,因为我意识到这个问题需要我花一些时间来解决,我有一个最后期限。但非常感谢,至少我了解了MHT文件的工作原理。我尝试了上述方法。似乎他们能够将html文件转换为mht。如果从web访问html文件,则此操作有效。但是如果您从本地驱动器访问html文件,那么转换将不起作用。上述来源使用了此方法:CreateMHTMLBody(URL,CDO.CdoMHTMLFlags.cdoSuppressNone,“,”);我之所以尝试在html文件中嵌入图像,是因为我正在创建一个windows窗体应用程序,该应用程序必须导出带有图像的报表。有没有一种不用商业图书馆就能完成的方法?将报告创建为模板。从ie导出。执行搜索/替换以获取报告内容。哦,我最终决定使用Visual studio的ReportViewer控件,因为我意识到这个问题需要一些时间才能解决,而且我还有一个最后期限。但是非常感谢,至少我了解了MHT文件的工作原理。
注意:
使用CDO的主要缺点是:COM互操作!并且不适用于64位系统(x64)
注意:
此示例(MSDN文章)不包括用于处理css背景图像的代码和对本地驱动器中的html文件有效的iFrames?@Kiquenet,应该可以。只需传递一个文件路径而不是URL