Foxtable(狐表)用户栏目专家坐堂 → word转照片


  共有3163人关注过本帖树形打印复制链接

主题:word转照片

帅哥哟,离线,有人找我吗?
lisangyu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4277 威望:0 精华:0 注册:2019/8/5 17:49:00
word转照片  发帖心情 Post By:2021/3/12 10:07:00 [只看该作者]

蓝总: 因为将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)                         


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4277 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2021/3/12 11:21:00 [只看该作者]

蓝大人:辛苦一下,我没调用这方面的经验,能不能辛苦下做个例子?我相信对所有用户而言也是一种福利,谢谢!

将 Word 保存为图片格式

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:将 word 保存为图片格式.txt



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4277 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By: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这个类型
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/12 13:47:00 [只看该作者]

补齐命名空间

Dim doc As New Spire.Doc.Document


 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4277 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By: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一页页的打开? 还是合成一张整图


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4277 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/13 10:25:00 [只看该作者]

一样补全命名空间

Dim Iso As New Aspose.Words.Saving.ImageSaveOptions(Aspose.Words.SaveFormat.Jpeg)

 回到顶部
总数 20 1 2 下一页