各位好:
我现在遇到了一个问题,我想要在word的某几页插入图片,使用的方法是定位到那一页的Paragraph,然后在那一页生成shape并且添加到Paragraph,但现在的问题是可能需要插入图片的那一页是一个table的一部分,因为这个table很长,占据了好几页,不管我使用Paragraph.AppendChild方法还是builder.InsertNode方法始终都无法正常显示图片,因为那一页的Paragraph都是在cell中,我把shape的属性设为
shape.IsLayoutInCell = false;
shape.ZOrder = 999999;
shape.BehindText = false;
也没有效果,求大神们帮忙,非常感谢!!!
以下是我的测试代码
static void TestAsposeWord2()
{
var fileName = "333.docx";
var saveFile = $"dist{DateTime.Now:yyyyMMddHHmmss}.docx";
var license = new License();
license.SetLicense("Aspose.Words.NET.lic");
Console.WriteLine("License set successfully.");
var doc = new Document(fileName);
var builder = new DocumentBuilder(doc);
var targetPage = new List<int> { 1, 2, 3, 4 };
var imageName = "dianzizhang.png";
var layoutCollector = new LayoutCollector(doc);
List<Node> mainBodyParagraphs = doc.GetChildNodes(NodeType.Paragraph, true).ToList();
foreach (Paragraph node in mainBodyParagraphs)
{
int paraPage = layoutCollector.GetStartPageIndex(node);
if (targetPage.Contains(paraPage))
{
Shape qrShape = new Shape(doc, ShapeType.Image);
qrShape.IsLayoutInCell = false;
qrShape.ZOrder = 999999;
qrShape.BehindText = false;
qrShape.ImageData.SetImage($"images\\{imageName}");
// var imageHeight = 500;
// var imageWidth = (double)qrShape.ImageData.ImageSize.WidthPixels / qrShape.ImageData.ImageSize.HeightPixels * imageHeight;
qrShape.Left = 0;
qrShape.Top = 0;
if (node.IsInCell)
{
Console.WriteLine(node.ParentNode.ParentNode.GetText());
}
builder.MoveTo(node);
builder.InsertNode(qrShape);
targetPage.Remove(paraPage);
}
}
doc.Save(saveFile);
}
@teriusstar 我认为在这种情况下,你需要在你需要的地方创建一个书签,并在书签处插入图像,如下所示:
builder.MoveToBookmark("bookmarkName");
builder.InsertImage(ImagePath);
Hi:
因为我必须要在页面的最右侧插入图片,而书签并不能定位到那个位置,所以无法使用此方法,我试了好几种方法都不行,难道某一页属于表格的一部分不能通过创建shape并定位坐标来插入图片?
@teriusstar 请使用MS Word创建一个带有此类图像的示例文件,并将文件附在此处。我不明白“极右翼”是什么意思。它在桌子的右下角还是右上角?也许翻译中有错误。图像需要位于桌子内部还是桌子上方?或者您应该使用页眉/页脚插入签名图像?