Asp.net 如何使用openxml和C从docx文件中的图像获取alt文本#
我正在创建一个web表单,它将对word文档执行508合规性检查。我正在通过MSDN和其他网站从用户选择的文件中获取所需信息。我找不到的一件事是如何找到图像,并检查它们是否有替代文本。任何帮助都将不胜感激 插入到2007+Word文档中的图像是Asp.net 如何使用openxml和C从docx文件中的图像获取alt文本#,asp.net,image,openxml,Asp.net,Image,Openxml,我正在创建一个web表单,它将对word文档执行508合规性检查。我正在通过MSDN和其他网站从用户选择的文件中获取所需信息。我找不到的一件事是如何找到图像,并检查它们是否有替代文本。任何帮助都将不胜感激 插入到2007+Word文档中的图像是绘图对象。因此,您可以遍历w:drawing成员的XML w:drawing成员将有一个名为w:inline的子级,它是inline类的一部分 w:inline成员将有一个名为wd:docPr的成员 wd:docPr成员可能有一个名为title的字段
绘图对象。因此,您可以遍历w:drawing
成员的XML
w:drawing
成员将有一个名为w:inline
的子级,它是inline
类的一部分
w:inline
成员将有一个名为wd:docPr
的成员
wd:docPr
成员可能有一个名为title
的字段,其中包含备选文本标题,还有一个名为descr
的字段,其中包含所有备选文本
XML示例:
<w:drawing xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="357A850A" wp14:editId="384E9053" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing">
<wp:extent cx="5943600" cy="4457700" />
<wp:effectExtent l="0" t="0" r="0" b="0" />
<wp:docPr id="1" name="Picture 1" descr="ALL TEXT HERE" title="ALT TEXT TITLE HERE"/>
...
...
我强烈建议您使用OpenXML SDK附带的OpenXML生产力工具。通过解压和lxprintf(LTXML2工具包的一部分)的副本,您可以更轻松地完成同样的工作,通过在一个循环中解压幻灯片并在每个幻灯片上运行lxprintf来定位wp:docPr元素并输出@descr和@title的值,例如
for f in `unzip -l demo.pptx | grep ppt/slides/slide.*\.xml | awk '{print $NF}'`; do
unzip -p demo.pptx $f |\
lxprintf -e 'w:drawing/wp:inline/wp:docPr' "%s, %s\n" @descr @title -
done
我以为alt text在dorPr的descr中?你是对的。我混淆了web图像和文本(它们只有一个字段)。更新答案。我只能提供C代码,如果你需要一个例子,我不能做ASP。所以我需要从我的理解中学习LINQ的基础知识,至少这样做会容易一点。这是我的新编码,我是java和C++或者C++的家伙。你如何在绘图元素中循环,然后抓住那些内联没有docPr with descr属性的元素?这里是一些示例C#代码,我能做的最好的(这是从内存中得到的,但可以编译,应该可以工作):你是一个绅士和学者。我非常感谢你的帮助。我一直在苦读LINQ书籍和MSDN,为这个项目做准备。非常感谢你帮我起步。