如何在目录中获取嵌入值和文件名
How to get embed value and file name in a directory
我有一个 docx
文件,想要生成图片 filenames/unique ids 组合的列表。
这是 docx
文件的相关部分:
<w:drawing>
<wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="2C4CE07B" wp14:editId="12367BBF">
...
...
<a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
<pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">
<pic:nvPicPr>
<pic:cNvPr id="2" name="ProfileGraph.png" />
<pic:cNvPicPr />
</pic:nvPicPr>
<pic:blipFill>
<a:blip r:embed="rId9">
<a:extLst>
所以我需要在一个目录条目中包含 rId9
和 ProfileGraph.png
。
我可以找到 rId9
:
var blipElements = from drawing in drawingElements
where drawing.Descendants<A.Blip>().Count() > 0
select drawing.Descendants<A.Blip>().First();
但是我不知道如何获取属于blipElements
中每个Blips
的cNvPr-elements
。
我的思路是
var names = from blip in blipElements
where blip.Ancestors<Picture>().First<Picture>().Descendants<....>()
如有任何帮助,我们将不胜感激。
怎么样
var body = doc.MainDocumentPart.Document.Body;
var pics = body.Descendants<DocumentFormat.OpenXml.Drawing.Pictures.Picture>();
var result = pics.Select(p => new
{
Id = p.BlipFill.Blip.Embed.Value,
Name = p.NonVisualPictureProperties.NonVisualDrawingProperties.Name.Value
});
假定 doc 是一个已经打开的 WordProcessingDocument 对象。
结果变量将是一个包含 Id 和 Name 属性的匿名类型的 IEnumerable。
我对文字处理 OpenXML 的知识不是特别了解,但理论上,Embed 和 Name 属性可能为 null,因此我想您可能必须在访问“.Value”之前测试是否为 null 属性.
我有一个 docx
文件,想要生成图片 filenames/unique ids 组合的列表。
这是 docx
文件的相关部分:
<w:drawing>
<wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="2C4CE07B" wp14:editId="12367BBF">
...
...
<a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
<pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">
<pic:nvPicPr>
<pic:cNvPr id="2" name="ProfileGraph.png" />
<pic:cNvPicPr />
</pic:nvPicPr>
<pic:blipFill>
<a:blip r:embed="rId9">
<a:extLst>
所以我需要在一个目录条目中包含 rId9
和 ProfileGraph.png
。
我可以找到 rId9
:
var blipElements = from drawing in drawingElements
where drawing.Descendants<A.Blip>().Count() > 0
select drawing.Descendants<A.Blip>().First();
但是我不知道如何获取属于blipElements
中每个Blips
的cNvPr-elements
。
我的思路是
var names = from blip in blipElements
where blip.Ancestors<Picture>().First<Picture>().Descendants<....>()
如有任何帮助,我们将不胜感激。
怎么样
var body = doc.MainDocumentPart.Document.Body;
var pics = body.Descendants<DocumentFormat.OpenXml.Drawing.Pictures.Picture>();
var result = pics.Select(p => new
{
Id = p.BlipFill.Blip.Embed.Value,
Name = p.NonVisualPictureProperties.NonVisualDrawingProperties.Name.Value
});
假定 doc 是一个已经打开的 WordProcessingDocument 对象。
结果变量将是一个包含 Id 和 Name 属性的匿名类型的 IEnumerable。
我对文字处理 OpenXML 的知识不是特别了解,但理论上,Embed 和 Name 属性可能为 null,因此我想您可能必须在访问“.Value”之前测试是否为 null 属性.