在特定单词页面上插入文本框
Insert a textbox on a specific word page
我正在遍历 word 文档中的所有故事范围,以查找不符合公司标准的形状。当我找到这样的形状时,我想在它的页面右上角添加一个文本框。到目前为止我只设法将它添加到第一页。
foreach (Word.InlineShape shape in storyRange.InlineShapes)
{
if (shape.Type == Word.WdInlineShapeType.wdInlineShapePicture)
{
if (shape.Width != CurrentWordApp.CentimetersToPoints(Constants.LogoWidth))
{
anchor = shape.Range;
shapePageNumber = (int)shape.Range.Information[Word.WdInformation.wdActiveEndPageNumber];
AddMarkerToPage(shapePageNumber, anchor);
}
}
}
这是 AddMarkerToPage 方法的摘录。我发现唯一可以添加文本框的地方是 header。我唯一找到 header 的地方是通过 object 部分。但是部分不等于页面。
Word.HeaderFooter header = anchor.Sections.First.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary];
if (!pageHasMarker)
{
Word.Shape tbx = header.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromLeft),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromTop),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerWidth),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerHeight), pageRange);
tbx.Name = "errorBox";
tbx.TextFrame.TextRange.Text = Resources.Strings.txtDesignCheckHeaderLogo;
}
}
我怎样才能到达形状所在页面上的 header,或者有另一个 object 允许我在特定页面上放置文本框(我有可用形状 object)
的数字
不要使用header,使用Document.Shapes
collection。
Word.Shape tbx = <document>.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromLeft),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromTop),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerWidth),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerHeight), anchor);
tbx.Name = "errorBox";
tbx.TextFrame.TextRange.Text = Resources.Strings.txtDesignCheckHeaderLogo;
我想你还需要这些:
tbx.RelativeVerticalPosition = WdRelativeVerticalPosition.wdRelativeVerticalPositionPage;
tbx.RelativeHorizontalPosition = WdRelativeHorizontalPosition.wdRelativeHorizontalPositionColumn;
我正在遍历 word 文档中的所有故事范围,以查找不符合公司标准的形状。当我找到这样的形状时,我想在它的页面右上角添加一个文本框。到目前为止我只设法将它添加到第一页。
foreach (Word.InlineShape shape in storyRange.InlineShapes)
{
if (shape.Type == Word.WdInlineShapeType.wdInlineShapePicture)
{
if (shape.Width != CurrentWordApp.CentimetersToPoints(Constants.LogoWidth))
{
anchor = shape.Range;
shapePageNumber = (int)shape.Range.Information[Word.WdInformation.wdActiveEndPageNumber];
AddMarkerToPage(shapePageNumber, anchor);
}
}
}
这是 AddMarkerToPage 方法的摘录。我发现唯一可以添加文本框的地方是 header。我唯一找到 header 的地方是通过 object 部分。但是部分不等于页面。
Word.HeaderFooter header = anchor.Sections.First.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary];
if (!pageHasMarker)
{
Word.Shape tbx = header.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromLeft),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromTop),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerWidth),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerHeight), pageRange);
tbx.Name = "errorBox";
tbx.TextFrame.TextRange.Text = Resources.Strings.txtDesignCheckHeaderLogo;
}
}
我怎样才能到达形状所在页面上的 header,或者有另一个 object 允许我在特定页面上放置文本框(我有可用形状 object)
的数字不要使用header,使用Document.Shapes
collection。
Word.Shape tbx = <document>.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromLeft),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromTop),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerWidth),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerHeight), anchor);
tbx.Name = "errorBox";
tbx.TextFrame.TextRange.Text = Resources.Strings.txtDesignCheckHeaderLogo;
我想你还需要这些:
tbx.RelativeVerticalPosition = WdRelativeVerticalPosition.wdRelativeVerticalPositionPage;
tbx.RelativeHorizontalPosition = WdRelativeHorizontalPosition.wdRelativeHorizontalPositionColumn;