0

所以。这是一个很难回答的问题:

我为 Word 2007 开发了一个 Word 插件,然后升级到 Word 2010。它在 2007 年很稳定,但是升级后一个重要功能停止工作,所以我不得不恢复我的更改。

停止的特定功能在文档中获取选定的图片,并在其旁边添加一个文本框,具有特定的格式。(我将在问题末尾提供代码)

最终版本可以安装在 2007 和 2010 版本中,但只能在 2007 年使用。直到今天!... [悬念]

偶然地,一位客户使用该插件在 Word 2010 上处理文档,令人惊讶的是,它成功了!

所以我去调查这个问题。我复制了一份工作文档和一份非工作版本的同一文档,并比较了两者的 OpenXML。

这是我发现的:

工作文件

这是工作文档上的图片标记:

<w:drawing>
    <wp:inline distT="0" distB="0" distL="0" distR="0">
        <wp:extent cx="3251200" cy="2285390"/>
        <wp:effectExtent l="19050" t="19050" r="25400" b="19685"/>
        <wp:docPr id="193" name="Imagem 48" descr="Elev. 4"/>
        <wp:cNvGraphicFramePr>
            <a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"/>
        </wp:cNvGraphicFramePr>
        <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
            <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="0" name=""/>
                        <pic:cNvPicPr/>
                    </pic:nvPicPr>
                    <pic:blipFill>
                        <a:blip r:embed="rId33">
                            <a:lum/>
                        </a:blip>
                        <a:stretch>
                            <a:fillRect/>
                        </a:stretch>
                    </pic:blipFill>
                    <pic:spPr>
                        <a:xfrm>
                            <a:off x="0" y="0"/>
                            <a:ext cx="3251200" cy="2285390"/>
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst/>
                        </a:prstGeom>
                        <a:noFill/>
                        <a:ln w="19044" cmpd="sng">
                            <a:solidFill>
                                <a:srgbClr val="333333"/>
                            </a:solidFill>
                            <a:prstDash val="solid"/>
                        </a:ln>
                    </pic:spPr>
                </pic:pic>
            </a:graphicData>
        </a:graphic>
    </wp:inline>
</w:drawing>

不是工作文件

这是非工作文档上的相同图片标记:

<w:drawing>
    <wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="0FC2E46A" wp14:editId="42C17A65">
        <wp:extent cx="3251200" cy="2285390"/>
        <wp:effectExtent l="19050" t="19050" r="25400" b="19685"/>
        <wp:docPr id="50" name="Imagem 50" descr="Elev. 1"/>
        <wp:cNvGraphicFramePr>
            <a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"/>
        </wp:cNvGraphicFramePr>
        <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
            <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="0" name=""/>
                        <pic:cNvPicPr/>
                    </pic:nvPicPr>
                    <pic:blipFill>
                        <a:blip r:embed="rId24">
                            <a:lum/>
                        </a:blip>
                        <a:stretch>
                            <a:fillRect/>
                        </a:stretch>
                    </pic:blipFill>
                    <pic:spPr>
                        <a:xfrm>
                            <a:off x="0" y="0"/>
                            <a:ext cx="3251200" cy="2285390"/>
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst/>
                        </a:prstGeom>
                        <a:noFill/>
                        <a:ln w="19044" cmpd="sng">
                            <a:solidFill>
                                <a:srgbClr val="333333"/>
                            </a:solidFill>
                            <a:prstDash val="solid"/>
                        </a:ln>
                    </pic:spPr>
                </pic:pic>
            </a:graphicData>
        </a:graphic>
    </wp:inline>
</w:drawing>

唯一的区别在于第二行,工作文档的内容如下:

<wp:inline distT="0" distB="0" distL="0" distR="0">

另一个是:

<wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="0FC2E46A" wp14:editId="42C17A65">

所以!不工作的文档图片有两个额外的属性wp14:anchorIdwp14:editId.

功能:

这是将文本框添加到图片并设置其格式的方法。

Sub AddTextBox(ByVal picture As Word.InlineShape)
  Dim textBox As Word.Shape =
    ActiveDocument.Shapes.AddTextbox(
        Orientation:=Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
        Left:=picture.Width + 10,
        Top:=0,
        Width:=MarginWidth - picture.Width - 10,
        Height:=picture.Height,
        Anchor:=picture.Range.Paragraphs(1).Range)

With textBox
    .RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionMargin
    .RelativeVerticalPosition = Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionParagraph

    .Line.DashStyle = Microsoft.Office.Core.MsoLineDashStyle.msoLineSolid
    .Line.BackColor.RGB = RGB(255, 255, 255)
    .Line.Style = Microsoft.Office.Core.MsoLineStyle.msoLineSingle
    .Line.Weight = 0.25

    .LockAnchor = True
End With
EndSub

问题:

如您所见,上面的方法将文本框与图像所在的段落顶部对齐。图像是内联的,因此,文本框顶部与图像顶部对齐。这就是 word 2007 和所提及的工作文件中发生的情况。

问题是:当我在不工作的文档上运行此方法时,文本框最终与 PAGE 的顶部对齐。无边际。

这份工作文件很特别。所有其他的行为都与 Word 2010 中的不工作一样。

我研究了 MSDN 文档,没有关于这些属性的信息。

所以,请:

  1. 什么是属性wp14:anchorIdwp14:editId
  2. 以及如何让 Word 停止生成它们?
  3. 或者当这些属性存在时如何阻止文本框进入页面顶部。

首先十分感谢。

4

1 回答 1

-1

有两种类型的标签内联和锚。

<wp:anchor distT="0" distB="0" distL="114300" distR="114300" simplePos="0" relativeHeight="251658240" behindDoc="0" locked="0" layoutInCell="1" allowOverlap="1" wp14:anchorId="7E0D7E99" wp14:editId="66BEB3EF">

给定的属性 wp14:anchorId 和 wp14:editId 与锚点相关,但我可以在您的代码中看到,它位于内联标记中。

<wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="0FC2E46A" wp14:editId="42C17A65">  

内联标签应该只有。

<wp:inline distT="0" distB="0" distL="0" distR="0" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing">

我认为这也会对其他人有所帮助。

谢谢。

于 2013-04-30T07:11:18.567 回答