gpt4 book ai didi

ms-word - 将图像添加到 Word 文档,就像拖放一样

转载 作者:行者123 更新时间:2023-12-02 04:08:20 28 4
gpt4 key购买 nike

我需要能够通过 .Net (VB) VSTO Word AddIn 在 Word 文档中插入图像。

问题是我需要插入它,所以它最终的结果就像用户使用“拖放”来插入图像,而不是“插入图片”工具栏按钮一样。

通常我会这样做:

wdRange.InlineShapes.AddPicture(imagePath, LinkToFile:=False, SaveWithDocument:=True)

但这复制了“插入图片”按钮的行为。

我需要复制拖放方法的原因是,在某些情况下打印时图片的 react 不同。

我可以通过在文档标题中插入一个大的彩色矩形并将图像放置在文档正文中来复制此操作,因此它最终位于彩色矩形的顶部。如果插入的图像具有透明度(就像许多 Logo 一样),在某些情况下,打印时最终会出现深色背景,而不是完全透明。(我还没有找到重现该问题所需的确切情况,但似乎需要某种打印机驱动程序组合,即 PCL 或 PS。)

为了让调试这个问题变得更加困难,当打印到 PDF 打印机时它是不可见的,它似乎只发生在纸上。并且仅在一些罕见的配置中。彩色和黑白打印机、新打印机(<1 年)和旧打印机都可能发生这种情况。

打印时上述场景的扫描示例,其中两个图像放置在彩色矩形上。使用“插入图片”按钮插入一张图像(具有深色背景),通过拖放插入另一张图像(具有正确的透明度)。两个图像都是使用相同的 .png 文件插入的。 (虽然一个的缩放比例与另一个略有不同,但我已经进行了彻底的测试,缩放或移动图像不会影响问题。) Problem example

我尝试在拖放图像时录制宏,但没有录制任何内容:-\

作为一种替代解决方案,也许插入的图像的某些属性可以更改,以确保它的行为就像通过拖放插入的图像一样?这是完全可以接受的!

注意:我无法在内部可用的 8 台打印机中复制此问题,并且仅在少数(大)客户现场遇到此问题。 因此不幸的是,测试建议的解决方案可能需要一些时间 :-(

更新事实证明,当使用从 Windows 10 拖放到 Word 2016 时,我只能复制具有正确透明背景的图片。Windows 7 生成不同的结果,因此我之前的测试(在 Windows 7 中进行)无效。

在 Word 中选择时,两个图像元素(一个通过“插入图片”插入,一个通过拖放插入)看起来不同。错误的图片(“插入图片”)具有白色选择标记,如下所示:

enter image description here

右图(从 Windows 10 拖放)具有灰色选择标记,如下所示:

enter image description here

我用于测试的图像在这里(“Transparent.gif”。两张图片的图像文件相同)

enter image description here

我检查了每个图像的 OpenXML 标记,它们非常不同。错误的图片最终会像 w:drawing 元素一样:

<w:drawing>
<wp:anchor distT="0" distB="0" distL="114300" distR="114300" simplePos="0" relativeHeight="251662336" behindDoc="0" locked="0" layoutInCell="1" allowOverlap="1">
<wp:simplePos x="0" y="0"/>
<wp:positionH relativeFrom="margin">
<wp:align>left</wp:align>
</wp:positionH>
<wp:positionV relativeFrom="paragraph">
<wp:posOffset>817245</wp:posOffset>
</wp:positionV>
<wp:extent cx="3048000" cy="647700"/>
<wp:effectExtent l="0" t="0" r="0" b="0"/>
<wp:wrapSquare wrapText="bothSides"/>
<wp:docPr id="9" name="Billede 9"/>
<wp:cNvGraphicFramePr>
<a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/>
</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="9" name="Transparent.gif"/>
<pic:cNvPicPr/>
</pic:nvPicPr>
<pic:blipFill>
<a:blip r:embed="rId1">
<a:extLst>
<a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
<a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/>
</a:ext>
</a:extLst>
</a:blip>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>
<pic:spPr>
<a:xfrm>
<a:off x="0" y="0"/>
<a:ext cx="3048000" cy="647700"/>
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
</pic:spPr>
</pic:pic>
</a:graphicData>
</a:graphic>
<wp14:sizeRelH relativeFrom="page">
<wp14:pctWidth>0</wp14:pctWidth>
</wp14:sizeRelH>
<wp14:sizeRelV relativeFrom="page">
<wp14:pctHeight>0</wp14:pctHeight>
</wp14:sizeRelV>
</wp:anchor>
</w:drawing>

右图最终成为 v:shape,标记少得多:

<v:shape id="_x0000_s2049" type="#_x0000_t75" style="position:absolute;margin-left:.3pt;margin-top:0;width:240pt;height:51pt;z-index:251661312;mso-position-horizontal:absolute;mso-position-horizontal-relative:text;mso-position-vertical:bottom;mso-position-vertical-relative:text;mso-width-relative:page;mso-height-relative:page">
<v:imagedata r:id="rId2" o:title="Transparent"/>
<w10:wrap type="square"/>
</v:shape>

到目前为止,我还无法通过 VBA 或 VB.NET(通过 VSTO AddIn)重新创建后者。

如果有人能解决这个问题,我相信问题就解决了。

这是我正在使用的示例文档的链接,顶部图片打印正确,底部图片打印时背景颜色较深(不幸的是,在某些打印机上,不是我的打印机。) Simple-test.docx(所有内容都放在页眉中,因为根据我的测试人员的说法,这可能是一个因素。)

最佳答案

设置 <a:noFill/>您需要设置形状的填充属性。应该执行类似于以下内容的操作,其中 inlShape是设置为插入图像的对象:

inlShape.Fill.ForeColor.RGB = -1
inlShape.Fill.Visible = False

请注意,必须同时设置 ForeColor 和 Visible 属性。仅设置其中之一不会产生您需要的结果。

关于ms-word - 将图像添加到 Word 文档,就像拖放一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584043/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com