以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  word转照片  (http://foxtable.net/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
--  
蓝大人:辛苦一下,我没调用这方面的经验,能不能辛苦下做个例子?我相信对所有用户而言也是一种福利,谢谢!

将 Word 保存为图片格式

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



--  作者:有点蓝
--  发布时间: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)