大家给看看,html文件通过WebBrowser.ExecWB转成TIF文件,不能直接保存!

wss1801 2008-12-12 04:12:48
我的目的是把网页文件转成Tif文件,有点小问题,大家给看看!

Form1.WebBrowser.Navigate2 "e:\test.html"
Form1.WebBrowser.ExecWB 6, 2, Empty, Empty


我想让程序直接保存为TIF文件,但是总会弹出一个保存提示(打印机设置为TIF了)而不能直接保存!晕,试了好多参数都没用,请问有什么招?谢谢

...全文
247 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fj182 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vansoft 的回复:]
楼上的,帮忙帮到底啊。
你给的代码他能跑起来吗?

需要引用olelib.tlb文件
[/Quote]

谁告诉你需要olelib.tlb?
代码中的Registry是我自己写的一个类,用于访问注册表,代码太多就没发。只需要把访问注册表的逻辑重写一下即可。
vansoft 2008-12-15
  • 打赏
  • 举报
回复
楼上的,帮忙帮到底啊。
你给的代码他能跑起来吗?

需要引用olelib.tlb文件
fj182 2008-12-15
  • 打赏
  • 举报
回复
用Office虚拟打印机来打印,以下代码可以把 WebBrowser 中的内容打印到指定文件。

Private Sub PrintHtmlToTIF(wb As WebBrowser, fileName As String)

Dim sTmpPath As String
Dim sTmpFile As String
Dim sDefaultPath As String

' Office 打印机配置路径
Const def_OfficePrinter_Cfg_Path As String = "Software\Microsoft\Office\11.0\MODI\MDI writer"
' 默认输出路径配置项名称
Const def_DefaultFolder_Cfg_Name As String = "DefaultFolder"

' 从注册表中读出打印机的默认输出目录
sDefaultPath = Registry.ReadString(HKEY_CURRENT_USER, def_OfficePrinter_Cfg_Path, def_DefaultFolder_Cfg_Name)

' 生成一临时目录用来存放打印输出
sTmpPath = App.Path & "\tmp" & Format$(Now(), "yyyymmddhhmmss")

MkDir sTmpPath

' 使用临时目录作为打印输出
Registry.WriteString HKEY_CURRENT_USER, def_OfficePrinter_Cfg_Path, def_DefaultFolder_Cfg_Name, sTmpPath

' 开始打印
wb.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 2

' 恢复默认设置
Registry.WriteString HKEY_CURRENT_USER, def_OfficePrinter_Cfg_Path, def_DefaultFolder_Cfg_Name, sDefaultPath

' 在临时目录中查找文件
sTmpFile = Dir(sTmpFile & "\*.*")

If Len(sTmpFile) = 0 Then ' 找不到文件则认为打印失败

Err.Raise vbObjectError, , "Print html failed"

Else

' 拷贝到指定路径
FileCopy sTmpPath & "\" & sTmpFile, fileName

End If

' 删除临时目录
Kill sTmpPath & "\*.*"
RmDir sTmpPath

End Sub

' Test
Private Sub Command1_Click()

PrintHtmlToTIF WebBrowser1, "c:\testhtml.tif"

End Sub


注意,不要修改这行代码,否则不能保证不弹出打印对话框和同步打印。
wb.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 2
其中,Registry 是用于访问注册表的对象,因代码较多就不贴了,可以写个方法实现。
代码中没有进行什么容错处理,请自行完善。
wss1801 2008-12-14
  • 打赏
  • 举报
回复
Form1.WebBrowser.ExecWB 6, 2, Empty, Empty
这第三个参数就是打印出来的名字
那个TIFF是打印输出格式
好像是那个补丁的原因
在别人的电脑就正常了
2楼的好像不能转成tif文件
韧恒 2008-12-13
  • 打赏
  • 举报
回复
Form1.WebBrowser.Navigate2 "e:\test.html"
Form1.WebBrowser.ExecWB 6, 2

在我的笔记本上,不出现任何提示, 直接打印了。 但有人说在某些打过补丁的系统中会出现打印提示框,不知你是不是这种情况。而我的笔记本一个补丁都没打过!^_^

另外,我不明白你所说的那个"打印机设置为TIF了",如果你不指定一个保存的文件名,它是如何工作的,如果他自动创建一个默认的文件名,那么它就可以工作了,否则它不知道该将文件保存到什么地方了。
wss1801 2008-12-13
  • 打赏
  • 举报
回复
你这样子,可以把网页下载到指定的地方,但是我的目的是把这个文件转成Tif文件?
韧恒 2008-12-12
  • 打赏
  • 举报
回复
好象没有任何方法可以取消那个提示, 因为那样是及不合理的,它已经被定义为一个安全漏洞,并已发布了补丁。MS推荐你是用URLDownloadToFile API

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

如:
r = URLDownloadToFile(0, "http://www.baidu.com", "c:\baidu.htm", 0, 0)
wss1801 2008-12-12
  • 打赏
  • 举报
回复
??

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧