zoukankan      html  css  js  c++  java
  • C# Word文档中插入、提取图片,文字替换图片

    Download Files:ImageOperationsInWord.zip

     

    简介

    在这篇文章中我们可以学到在C#程序中使用一个Word文档对图像的各种操作。图像会比阅读文字更有吸引力,而且图像是与内容紧密相关的。有时图像可以将内容描述的更为清晰,就像使用图表显示某一周期内的数据变化。

    Spire.Doc for .NET是一个的基于.NET 专业Word组件,它不仅可以在脱离微软office自动化的情况下快速地生成、打开、修改、保存Word文档 ,还支持用户使用C#将图像插入Word并根据页面设置它的大小。这篇就是介绍给大家一个简单的方法来插入图像----使用Spire.Doc for .NET。

    以下就是我们要学习的操作步骤:

    1、Word文档中插入一张图片。

    2、Word文档中提取一张图片。

    3、Word文档中将图片替换成文字。

     

    在进行这些操作之前我们要先创建Word文档。在这里我使用Spire.Doc for .NET来创建文档并完成后续的操作。

       

    创建一个控制台程序来做演示。根据以下步骤:        

    1、打开Visual Studio        

    2、"File" -> "New" -> "Project..."        

    3、选择C#语言然后选择控制台程序并命名为“ImageOperationInWord”        

    4、单击OK

    Word中插入图片

    首先,创建新的Word文档并为之添加章节和段。然后,使用p.AppendPicture(Image)方法将图像插入到新段中。设置图像的高度和宽度属性来规定图片大小。使用以下代码来用C#把图片插入到Word中。

    Namespace 使用:

    using Spire.Doc;  
    using Spire.Doc.Documents;  
    using Spire.Doc.Fields;  
    using System.Drawing;  

    Word文档中创建并插入图像:

     private static void InsertImage()  
    {  
     //Create Document  
      Document document = new Document();  
      Section s = document.AddSection();  
      Paragraph p = s.AddParagraph();  
     
      //Insert Image and Set Its Size  
      DocPicture Pic = p.AppendPicture(Image.FromFile(@"D:C# Corner.png"));  
      Pic.Width = 500;  
      Pic.Height = 500;  

      //Save and Launch  
      document.SaveToFile("Image.docx", FileFormat.Docx);  
      System.Diagnostics.Process.Start("Image.docx");  
     }  

    结果

     

    Word文档中提取图片

     在这里我们学习下如何在C#中从已存在的Word文档中提取图片并将图片保存到指定的路径。图片是一种属于段落项目的文档对象。Spire.Doc for .NET 提供了一个DocumentObject类来存储文档中的图像,并且还提供DocPicture类来获得和设置文档中的图像。在这里我使用了ExtractImages.docx并在其中保存了两幅图。在输出图像文件夹中我们可以看到红色框中的来自Word文档的两幅图像。

     提取Word图片代码:

     private static void ExtractImages()  
     {  
         //Load document  
         Document document = new Document(@"D:ExtractImages.docx");  
         int index = 0;  
       
         //Get Each Section of Document  
         foreach (Section section in document.Sections)  
         {  
             //Get Each Paragraph of Section  
             foreach (Paragraph paragraph in section.Paragraphs)  
             {  
                //Get Each Document Object of Paragraph Items  
                 foreach (DocumentObject docObject in paragraph.ChildObjects)  
                 {  
                     //If Type of Document Object is Picture, Extract.  
                     if (docObject.DocumentObjectType == DocumentObjectType.Picture)  
                     {  
                         DocPicture pic = docObject as DocPicture;  
                         String imgName = String.Format(@"D:Extracted_Image-{}.png", index);  
      
                         //Save Image  
                         pic.Image.Save(imgName, System.Drawing.Imaging.ImageFormat.Png);  
                         index++;  
                     }  
                 }  
             }  
         }  
     }  

      

       结果

         

    Word文档中将图片替换为文字

        我们来看下 Spire.Doc是如何帮助开发者们解决他们关于office技术的程序问题的。观察以上问题的描述,我们最终是想使用相应的“C# Corner Demo Example - {image index}” 来将Word文件中的每幅图都替换掉。我们还是用下面的演示代码来解决吧。

       Word文档中的图片替换为文字的代码:

     
     private static void ReplaceImageWithText()  
     {  
         Document doc = new Document(@"D:ExtractImages.docx");  
         int j = 1;  
         foreach (Section sec in doc.Sections)  
        {  
             foreach (Paragraph para in sec.Paragraphs)  
             {  
                 List<DocumentObject> images = new List<DocumentObject>();  
                 foreach (DocumentObject docObj in para.ChildObjects)  
       
                {  
                     if (docObj.DocumentObjectType == DocumentObjectType.Picture)  
                     {  
                         images.Add(docObj);  
                    }  
                 }  
                 foreach (DocumentObject pic in images)  
                 {  
                     int index = para.ChildObjects.IndexOf(pic);  
                     TextRange range = new TextRange(doc);  
                     range.Text = string.Format("C# Corner Demo Example {}", j);  
                    para.ChildObjects.Insert(index, range);  
                     para.ChildObjects.Remove(pic);  
                     j++;  
         }
         }  
         doc.SaveToFile(@"D: esult.docx", FileFormat.Docx);  
         System.Diagnostics.Process.Start(@"D: esult.docx");  
     }   

          

          在替换前

          

         将图片替换为文字后

          

       注意:更详细的代码请下载最上面的附加的压缩包。

    总结

       希望大家看完后都理解了如何以编程方式在Word文档中对图像进行操作。如果大家有其他的关于图像操作的好建议,欢迎讨论哦。

    关于Spire.Doc的更多内容点击这里

  • 相关阅读:
    20182324 2019-2020-1 《数据结构与面向对象程序设计》实验6报告
    20182324 2019-2020-1 《数据结构与面向对象程序设计》实验5报告
    20182324 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结
    Git fetch和git pull的区别
    第6章 线索二叉树
    第三章 线性表---链式存储结构(静态链表)
    第6章 树---二叉树
    第6章 树
    第4章 栈与队列-----栈
    第4章 栈与队列-----队列
  • 原文地址:https://www.cnblogs.com/Yesi/p/4203127.html
Copyright © 2011-2022 走看看