Word文書に対して508コンプライアンスチェックを行うWebフォームを作成しています。ユーザーが選択したファイルから必要な情報を取得するために、MSDNおよびその他のサイトを調べています。私が見つけられないことの1つは、画像を見つける方法と、それらに代替テキストがあるかどうかを確認する方法です。どんな助けでも大歓迎です!
2 に答える
2007+Word文書に挿入された画像はDrawing
オブジェクトです。w:drawing
したがって、メンバーのXMLをトラバースできます。
http://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.drawing.aspx
w:drawing
メンバーには、クラスのw:inline
一部であるという子がいます。Inline
http://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.wordprocessing.inline.aspx
メンバーには、という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"/>
...
OpenXMLSDKに付属のOpenXMLProductivityToolを使用することを強くお勧めします。
スライドをループで解凍し、それぞれでlxprintfを実行してwp:docPr要素を見つけ、@の値を出力することで、unzipとlxprintf(LTXML2ツールキットの一部)のコピーを使用して同じことを少し簡単に行うことができます。 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