Я борюсь со многими днями, пытаясь решить эту проблему, но я не могу понять это.Я надеюсь, что вы можете мне помочь.
Как вы видите, я пытаюсь добавить изображение, ширина которого всегда больше высоты изображения (все они "* .png").Моя цель состоит в том, чтобы добавить это изображение в верхнем левом углу страницы пропорционально, поэтому, если изображение слишком велико, код изменит его до нужного размера.
Но моя проблема в том,что я не могу понять, как добавить свое изображение в шапку.Изменение размера изображения было бы другой проблемой для меня.
Если возможно, могу ли я добавить новое изображение в текущий заголовок?Если нет, тогда добавление полностью нового заголовка страницы будет для меня нормой.
Что я использую?
В Visual Studio я использую DocumentFormat
какэто:
using DocumentFormat.OpenXml;
У меня также есть несколько шаблонов (* .dotx), где я на самом деле получаю эти шаблоны, и на этих шаблонах я хотел бы добавить эти изображения для создания моего документа.
Что я попробовал?
Я уже видел этот пост здесь:
Вставьте картинку в заголовок документа Word с OpenXML
... на чем фактически основан мой код.
private static void addHeaderToDocument(WordprocessingDocument wordDocument, MainDocumentPart mainDocumentPart, string relativeLogoFile)
{
var newHeaderPart = mainDocumentPart.AddNewPart<HeaderPart>();
var imagePart = headerPart.AddImagePart(ImagePartType.Png, "rId999");
var imagePartID = headerPart.GetIdOfPart(imagePart);
GetImageFromFile(imagePart, relativeLogoFile);
var rId = mainDocumentPart.GetIdOfPart(headerPart);
var headerRef = new HeaderReference { Id = rId };
var sectionProps = wordDocument.MainDocumentPart.Document.Body.Elements<SectionProperties>().LastOrDefault();
if (sectionProps == null)
{
sectionProps = new SectionProperties();
wordDocument.MainDocumentPart.Document.Body.Append(sectionProps);
}
sectionProps.RemoveAllChildren<HeaderReference>();
sectionProps.Append(headerRef);
headerPart.Header = GeneratePicHeader(imagePartID);
headerPart.Header.Save();
}
private static ImagePart GetImageFromFile(ImagePart imagePart, string relativeLogoFile)
{
using (FileStream stream = new FileStream(HttpContext.Current.Server.MapPath("~/" + relativeLogoFile), FileMode.Open))
{
imagePart.FeedData(stream);
}
return imagePart;
}
Что именно происходит при запуске этого кода?
На самом деле, работаетэтот код добавляет изображение в заголовок, но не на первую страницу, вместо этого изображение будет добавлено на второй странице, что меня действительно смущает!
У вас есть идеи и предложения, что здесь делать?Я делаю что-то неправильно?Или может быть что-то ошибка с моим файлом .dotx?
Каков наилучший способ сделать это?Должен ли я сначала удалить заголовок, а затем добавить изображение в заголовок (в правом верхнем углу у меня уже есть изображение, которое находится в файле * .dotx)?
Я надеюсь, что вы можете помочь мне с этой проблемой.