Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何使用openxml和C从docx文件中的图像获取alt文本#_Asp.net_Image_Openxml - Fatal编程技术网

Asp.net 如何使用openxml和C从docx文件中的图像获取alt文本#

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的字段

我正在创建一个web表单,它将对word文档执行508合规性检查。我正在通过MSDN和其他网站从用户选择的文件中获取所需信息。我找不到的一件事是如何找到图像,并检查它们是否有替代文本。任何帮助都将不胜感激

插入到2007+Word文档中的图像是
绘图对象。因此,您可以遍历
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,为这个项目做准备。非常感谢你帮我起步。