c#实现Word转换PNG图片

由于项目需要,经过一些大神的指导以及github,stackOverflow找资料,写了个这么个程序。

主要是因为word文档有特殊字体,特殊字体处理就要用到EnhMetaFileBits,即获取一页内容的增强图元信息。类型属于 EmfPlusDual。

在此,特别感谢github,stackOverflow,csdn这三个网站,能够分享技术的人,乐于帮助别人的人。

虽然大部分代码能够在网上找到,但里面也有一丁点自己的思想,也算是自己对代码业的一丁点贡献吧。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using InteropWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using Microsoft.Office.Interop.Word;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Word2Png w = new Word2Png();
            w.SaveToImages("d:\\");
        }
    }
    class Word2Png
    {
        Application wordApp = null;
        private InteropWord.Document document = null;
        public void SaveToImages(string directory)
        {
            this.wordApp = new Application();
           this.document =  this.wordApp.Documents.Open("c:\\2.docx");

            InteropWord.Windows windows = this.document.Windows;
            int windowCount = windows.Count;
            for (var i = 1; i <= windowCount; i++)
            {
                InteropWord.Window win = windows[i];
                InteropWord.View windowsView = win.View;

                // Pages can only be retrieved in print layout view.
                windowsView.Type = InteropWord.WdViewType.wdPrintView;

                InteropWord.Panes panes = win.Panes;
                int paneCount = panes.Count;
                for (var j = 1; j <= paneCount; j++)
                {
                    InteropWord.Pane pane = panes[j];
                    var pages = pane.Pages;
                    var pageCount = pages.Count;
                    for (var k = 1; k <= pageCount; )
                    {
                        InteropWord.Page p = null;

                        try
                        {
                            p = pages[k];
                        }
                        catch
                        {
                            // pages[k] sometimes throws exception: ‘System.Runtime.InteropServices.COMException: The requested member of the collection does not exist‘.
                            // This is a workaround for this issue.
                            continue;
                        }

                        var bits = p.EnhMetaFileBits;
                        var target =directory+  string.Format(@"\{0}_image.doc", k);
                        using (var ms = new MemoryStream((byte[])(bits)))
                        {
                            var image = System.Drawing.Image.FromStream(ms);
                            var imageTarget = Path.ChangeExtension(target, "png");
                            image.Save(imageTarget, ImageFormat.Png);
                        }

                        Marshal.ReleaseComObject(p);
                        p = null;

                        k++;
                    }

                    Marshal.ReleaseComObject(pages);
                    pages = null;

                    Marshal.ReleaseComObject(windowsView);
                    windowsView = null;

                    Marshal.ReleaseComObject(pane);
                    pane = null;
                }

                Marshal.ReleaseComObject(panes);
                panes = null;

                Marshal.ReleaseComObject(win);
                win = null;
            }

            Marshal.ReleaseComObject(windows);
            windows = null;
        }

        public void Close()
        {
            if (this.document != null)
            {
                ((InteropWord._Document)this.document).Close();

                Marshal.ReleaseComObject(this.document);
                this.document = null;

            }
        }
    }
}

  声明:转载请注明出处,有问题联系:[email protected]

时间: 2024-10-13 12:39:28

c#实现Word转换PNG图片的相关文章

如何word文档中的内容转换成图片

方法/步骤 例如在Word中输入了一些文字内容(如下图). 现希望下图红色方框的部分转换成图片格式,以达到保留固定格式,不被他人修改. 选中上图所示的红色部分,点击鼠标右键选择“复制”. 现在将复制的区域替换成图片:点击“开始”中的“粘贴”的下三角,然后点击“选择性粘贴”. 在打开“选择性粘贴”对话框中选择“图片(增强型图元文件)”,然后点击“确定”即可将复制的文字粘贴为图片了. 效果如下图所示,发现刚才的文字变成图片了. 想把该图片提取出来可以做如下操作:点击该图片,右键选择“另存为图片”,然

C#将Word转换成PDF方法总结(基于Office和WPS两种方案)

有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然后让客户预览,下面来看一下基于Office和WPS的两种解决方案.  一.基于Office的解决方案(推荐使用这种方式) 正如标题所说,基于Office就是要求服务器上面要安装的有Office.我们通过C#代码来调用COM接口,实现将Word转换成PDF.下面来看一下具体实现,首先引用Microso

pdf文件内容如何转换成图片

在将pdf文件或者是word文档转换成为图片时,一般的方法都是讲如何使用截图的方式来把文档内容转换成图片,但是除此之外,还有什么方法可以把pdf以及office文档转换成图片吗? 如果只是将pdf文件转成图片,可以用在线工具把pdf文档的内容转换成图片的形式,这在一些专门的pdf在线转换应用中可以实现. 首先找到在线pdf转图片,并进入到首页.在首页中会有pdf转成图片的选项,直接选择该项,进入到转换的操作页面. 点选择文件,然后就可以在选择一个需要进行转换的pdf文档,选择的文件会添加到转换页

如何将word转换成pdf格式的文档

word文档是办公常用到的一种格式,它可以方便的记录文字.图片,也可以随时修改,让我们的工作方便很多,但随时修改并不见得只有好处,如果是一份重要的word文档编辑完成后你还希望他可以随时修改吗?答案当然是否定的,所以我们需要将word转换成pdf格式. word转换成pdf格式比较常用到,所以方法也比较的多,下面一一介绍: 首先可以直接转换,打开word文档,找到wps文字旁的下拉箭头,点击文件,找到“输出为pdf"选项单击: 文件的保存格式大家可以设置一下,方便自己找到,然后确定就行了. 第一

教你怎样把PDF文件转换成图片

将一些PDF文件内容转换成为图片,这在办公中经常会遇到,不管是什么类型的文档要转换成图片,用截图方式是不能很快完成的,尤其是PDF这种文档,有些页面就有很多,那PDF文件如何转换成JPG格式图片. 将PDF转换成图片,一般是以文档的页面为单位,每个页面内容转换成一张图片,而且需要使每张图片的尺寸相同.那么在转换一些页面较少的PDF文档时,可以把PDF文件通过在线转换应用进行转换. 通过在线pdf转换成图片需要转换的PDF文档进行上传,在线转换完成后,将转换好图片的压缩包下载下来就可以了. 转换一

小技巧—如何将pdf文件转换成图片

有时候将文档内容发送给别人查看时,如果不想文档被修改或者复制,可以吧文档转换成一张张的图片,这样就可以了.不同的文档有不同的方法,如果转换的文档是pdf文件该怎么操作呢? 如果文档内容较少,那么不用借助任何工具,直接通过在线转换,就能把pdf转为图片. 在线转换是通过一些网页应用,来对文档进行转换操作的.进入到在线转换工具后,选择对应的转换类型,然后把要转换文档进行上传,等处理完成后下载下来就可以了. 工具:PDF转换成图片在线http://app.xunjiepdf.com/pdf2jpg 通

批量将网页转换成图片或PDF文档技巧分享

工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,虽然多数浏览器具有滚动截屏或者打印输出PDF文档功能,但是如果有几十上百张网页需要处理,那也是要人命的.所以我一直想找一款能够批量处理该工作的软件,但基本都是收费的,即便是收费的功能也一般.终于,我找到了wkhtmltopdf这款免费开源软件,最贴合我的工作,由衷感谢软件的作者"Jakob Truelsen"和"Ashish Kulkarni"两位大神!我安装软件后,结合windows的批处理命令,顺利测

在线迅捷PDF转Word转换软件

对于国内的在线PDF转换器平台,我们可以发现这样一个特点:大部分在线PDF转换器平台都难以实现高质量.高清晰度的PDF转换,同时由于受到技术上研发上的限制,普遍能够支持的转换格式都仅仅局限在Word. 传统的PDF转换成Word转换器软件缺乏优秀的转换质量,对于较为复杂的PDF文件内容,这部分PDF转换器很容易出现识别错误,由此造成一系列的转换之后的问题,包括转换之后文字乱码.页面排版错误以及Word文件无法打开等.如何高质量地对PDF文件进行转换,是目前我们需要了解的关键内容之一. 以国内知名

在线将Word转换成PDF的方法

如果你想把自己手头的Word格式的小说或者论文转换成为PDF格式,应该如何处理呢?答案其实非常简单,无需人工操作,只要借助小编发现的在线Word转换成PDF转换器,通过网页上传Word文档,就可以非常轻松地实现两者的转换. 通常来说,以Word作为文件格式的内容可以被修改.编辑,而以PDF文件格式为主的文档通常很难改动和编辑,以此PDF文件也通常被作为电子书的标准格式之一.同时,PDF文件格式还有一个明显的优势,就是可以支持跨平台的阅读,无论是安卓Android手机系统还是苹果IOS手机系统,都