如何从.DOCX文件中获取标题文本与图像

如何从.DOCX文件中获取标题文本与图像

问题描述:

我想获取标题图像格式的doc文件。我用下面的代码它给我图片的路径,但我不能让它如何从.DOCX文件中获取标题文本与图像

DocumentFormat.OpenXml.Packaging.ImagePart img = header.ImageParts.FirstOrDefault(); 
string imgpath = img.Uri.OriginalString; 

我觉得你的做法没有奏效,因为doc文件是一个zip文件。 我不知道你需要那个图像的格式,但你可以尝试像这样来检索图像对象。我用一个工作示例更新了我的答案,希望它有所帮助。

using (var document = WordprocessingDocument.Open("your document path", true)) 
{ 
    //Get the header 
    var header = document.MainDocumentPart.HeaderParts.First(); 
    //These are your paragraphs where you can get the headers Text from 
    var paragraphList = header.Header.Descendants<DocumentFormat.OpenXml.Wordprocessing.Paragraph>(); 
    //Get the imageId 
    string imgId = header.GetIdOfPart(header.ImageParts.First()); 

    var imageSource=new BitmapImage(); 
    //Get the imageStream 
    using (var imgStream = ((ImagePart)header.GetPartById(imgId)).GetStream()) 
    { 
     //Copy stream to BitmapImage 
     using (var memoryStream = new MemoryStream()) 
     { 
      imgStream.CopyTo(memoryStream); 
      memoryStream.Position = 0; 
      imageSource.BeginInit(); 
      imageSource.CreateOptions = BitmapCreateOptions.PreservePixelFormat; 
      imageSource.CacheOption = BitmapCacheOption.OnLoad; 
      imageSource.UriSource = null; 
      imageSource.StreamSource = memoryStream; 
      imageSource.EndInit(); 
     } 
     imageSource.Freeze(); 
     //Save BitmapImage to file 
     var encoder = new PngBitmapEncoder(); 
     encoder.Frames.Add(BitmapFrame.Create(imageSource)); 
     using (var stream = new FileStream("your path for the image.png", FileMode.Create)) 
      encoder.Save(stream); 
    } 
} 

这是一个例子,你如何得到你的照片的位置,但要记住它只会在你的照片有绝对位置时才起作用。

List<DocumentFormat.OpenXml.Wordprocessing.Drawing> sdtElementDrawing = 
    header.Header.Descendants<DocumentFormat.OpenXml.Wordprocessing.Drawing>().ToList(); 
    var distL= sdtElementDrawing.First().Anchor.DistanceFromLeft; 
+0

它不适用于我..我想docx文件头细节如图像,文本使用OpenXml –

+0

我更新了我的答案也许这将为你工作。 – Johannes

+1

thanx #jo它的工作 –