以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- word转照片 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=161289) |
-- 作者:lisangyu -- 发布时间:2021/3/12 10:07:00 -- word转照片 蓝总: 因为将word转MHTML格式,还不是非常好,存在部分格式丢失,例如划线类 表格式 容易错位 ,影响阅读,如果将word直接转jpg,该如何? 您以前写的代码 ,是将word分页转成照片,用webbrowser打开有问题,能不能合成一张照片 再打开呢? Dim tmp As String = projectpath & "RemoteFiles\\" & wjm \'\'\'下载的文件路径 Dim mht As String = projectpath & "RemoteFiles\\" & wjm & ".jpg" \'\'\'\'转换为MHTML格式的文件路径 Dim app As New MSWord.Application try Dim doc = app.Documents.Open(projectpath & "RemoteFiles\\" & wjm) Dim allpage = doc.ComputeStatistics(msWord.WdStatistic.wdStatisticPages) For objPage As Integer = 1 To allpage Dim objWhat = msWord.WdGoToItem.wdGoToPage Dim objWhich = MsWord.WdGoToDirection.wdGoToAbsolute Dim range1 = Doc.GoTo(objWhat, objWhich, objPage) Dim range2 = range1.GoToNext(MsWord.WdGoToItem.wdGoToPage) Dim bjStart = range1.Start Dim objEnd = range2.Start If range1.Start = range2.Start Then objEnd = Doc.Characters.Count \'msgbox(objpage) Doc.Range(bjStart, objEnd).Select app.ActiveWindow.Selection.copy app.ActiveWindow.Selection.PasteSpecial(Link:=False, DataType:=9, _ Placement:=0, DisplayAsIcon:=False) Next Dim i As Integer = 1 For Each shape As object In doc.InlineShapes shape.Range.copy If ClipBoard.GetImage IsNot Nothing Then ClipBoard.GetImage.save(projectpath & "RemoteFiles\\" & wjm & i & ".jpg") End If i += 1 Next Doc.saved = True \'app.visible = True app.visible = True catch ex As exception msgbox(ex.message) app.Quit finally \'app.Quit End try e.Form.Controls("WebBrowser1").Address = (mht) |
-- 作者:有点蓝 -- 发布时间:2021/3/12 10:30:00 -- 百度了一下,没有发现vba有直接转换文档图片的方法。 有个开源组件Free Spire.Doc for .NET,自己试试:https://www.e-iceblue.cn/spiredoc/spire-doc-for-net-program-guide-content.html |
-- 作者:lisangyu -- 发布时间:2021/3/12 11:21:00 -- 蓝大人:辛苦一下,我没调用这方面的经验,能不能辛苦下做个例子?我相信对所有用户而言也是一种福利,谢谢! |
-- 作者:有点蓝 -- 发布时间:2021/3/12 11:23:00 -- 把需要的组件dll复制到foxtable安装目录,引用组件:http://www.foxtable.com/webhelp/topics/1936.htm 把代码转换为vb.net:https://converter.telerik.com/
[此贴子已经被作者于2021/3/12 11:23:08编辑过]
|
-- 作者:lisangyu -- 发布时间:2021/3/12 13:04:00 -- 找到一个免费版的,提取了dll,上传不了附件 Dim doc As Document = New Document doc.LoadFromFile(tmp) \'保存为Png格式的图片 Dim images() As Image = doc.SaveToImages(Spire.Doc.Documents.ImageType.Metafile) Dim i As Integer = 0 Do While (i < images.Length) Dim outputfile As String = String.Format("image-{0}.png", i) images(i).Save(outputfile, System.Drawing.Imaging.ImageFormat.Png) i = (i + 1) Loop 报错, 没有Document这个类型 |
-- 作者:有点蓝 -- 发布时间:2021/3/12 13:47:00 -- 补齐命名空间 Dim doc As New Spire.Doc.Document |
-- 作者:lisangyu -- 发布时间:2021/3/12 14:43:00 -- If ftp1.Download(fp,projectpath & "RemoteFiles\\" & wjm) = True Then If hz = "doc" Or hz = "docx" Then Dim tmp As String = projectpath & "RemoteFiles\\" & wjm \'\'\'下载的文件路径 Dim mht As String = projectpath & "RemoteFiles\\" & wjm & ".mhtml" \'\'\'\'转换为MHTML格式的文件路径 Dim doc As New Spire.Doc.Document doc.LoadFromFile(tmp) \'保存为Png格式的图片 Dim images() As Image = doc.SaveToImages(Spire.Doc.Documents.ImageType.Metafile) Dim i As Integer = 0 Do While (i < images.Length) Dim outputfile As String = String.Format("image-{0}.png", i) images(i).Save(outputfile, System.Drawing.Imaging.ImageFormat.Png) i = (i + 1) Loop \'\'\'\'===============================打开word 蓝总:转化成功了,品质挺高,就是也是一页页的转化,image-0 ,image-1,image-2,而且免费版只能转化4页, 怎么利用webbroser一页页的打开? 还是合成一张整图 |
-- 作者:有点蓝 -- 发布时间:2021/3/12 14:47:00 -- 添加按钮,根据索引合成文件名image-0 ,image-1,image-2 比如默认第一页 vars("p") = 0 dim s as string = "d:\\image-" & vars("p") & ".jpg" e.Form.Controls("WebBrowser1").Address = s 下一页 vars("p") = vars("p") +1 dim s as string = "d:\\image-" & vars("p") & ".jpg" e.Form.Controls("WebBrowser1").Address = s
|
-- 作者:lisangyu -- 发布时间:2021/3/13 10:10:00 -- 蓝总: 免费版有限制,我在网上找了一个没有限制的dll , 代码如下 : Document doc = new Document( "f:\\\\333.doc" ); ImageSaveOptions iso = new ImageSaveOptions(SaveFormat.Jpeg); iso.Resolution = 128; iso.PrettyFormat = true ; iso.UseAntiAliasing = true ; for ( int i = 0; i < doc.PageCount; i++) { iso.PageIndex = i; doc.Save( "D:/test/test" + i + ".jpg" , iso); }
转化代码: Dim doc As New Aspose.Words.Document(tmp) Dim Iso As New Aspose.Words.Saving.ImageSaveOptions(SaveFormat.Jpeg) iso.Resolution = 128 iso.PrettyFormat = True iso.UseAntiAliasing = True For (int i = 0; i < doc.PageCount; i++) { iso.PageIndex = i doc.Save("D:/test" + i + ".jpg", iso) } 报错 fox代码要怎么写?1楼代码可以生成jpg,但是生成的jpg照片不知道用webbroser为什么打不开? [此贴子已经被作者于2021/3/13 10:23:36编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/3/13 10:25:00 -- 一样补全命名空间 Dim Iso As New Aspose.Words.Saving.ImageSaveOptions(Aspose.Words.SaveFormat.Jpeg)
|