Горизонтальное и вертикальное выравнивание изображения из C# в WordC#

Место общения программистов C#
Ответить
Anonymous
 Горизонтальное и вертикальное выравнивание изображения из C# в Word

Сообщение Anonymous »

По сути, я пытаюсь центрировать изображение по горизонтали относительно страницы и снова выровнять его по низу по вертикали относительно страницы. Изображение находится в нижнем колонтитуле. Судя по всему, с шириной, высотой и т. д. все в порядке. Заранее спасибо!
private static void AddImageToFooter(FooterPart footerPart, string imagePath)
{
ImagePart imagePart = footerPart.AddImagePart(ImagePartType.Png);
using (FileStream stream = new FileStream(imagePath, FileMode.Open))
{
imagePart.FeedData(stream);
}

string relationshipId = footerPart.GetIdOfPart(imagePart);

int imageWidthPx = 795;
int imageHeightPx = 137;

long imageWidthEmus = imageWidthPx * 9525;
long imageHeightEmus = imageHeightPx * 9525;

Drawing imageElement = new Drawing(
new DW.Inline(
new DW.Extent() { Cx = imageWidthEmus, Cy = imageHeightEmus },
new DW.EffectExtent() { LeftEdge = 0, TopEdge = 0L, RightEdge = 0L, BottomEdge = 0L },
new DW.HorizontalAlignment() { },
new DW.VerticalAlignment() { },
new DW.DocProperties() { Id = (UInt32Value)1U, Name = "Picture" },
new DW.NonVisualGraphicFrameDrawingProperties(new A.GraphicFrameLocks() { NoChangeAspect = true }),
new A.Graphic(
new A.GraphicData(
new PIC.Picture(
new PIC.NonVisualPictureProperties(
new PIC.NonVisualDrawingProperties() { Id = (UInt32Value)0U, Name = "New Image" },
new PIC.NonVisualPictureDrawingProperties()),
new PIC.BlipFill(
new A.Blip() { Embed = relationshipId },
new A.Stretch(new A.FillRectangle())),
new PIC.ShapeProperties(
new A.Transform2D(
new A.Offset() { X = 0L, Y = 0L },
new A.Extents() { Cx = imageWidthEmus, Cy = imageHeightEmus }),
new A.PresetGeometry(new A.AdjustValueList()) { Preset = A.ShapeTypeValues.Rectangle })
)
)
{ Uri = "http://schemas.openxmlformats.org/drawi ... 06/picture" }
)
)
{ DistanceFromTop = (UInt32Value)0U, DistanceFromBottom = (UInt32Value)0U, DistanceFromLeft = (UInt32Value)0U, DistanceFromRight = (UInt32Value)0U, EditId = "50D07946" }
);

Paragraph paragraph = new Paragraph(new Run(imageElement));
footerPart.Footer.Append(paragraph);

footerPart.Footer.Save();

}


Я пробовал несколько вещей, таких как Anchor(), но по какой-то причине мой документ Word не открывается, я предполагаю, что он не поддерживается, или я Я просто делаю это неправильно, приведу фрагмент того, что пробовал ранее:
long horizontalPositionEmus = (totalPageWidthEmus - imageWidthEmus) / 2; // Center horizontally
long verticalPositionEmus = totalPageHeightEmus - imageHeightEmus;

Drawing imageElement = new Drawing(
new DW.Anchor(
new DW.SimplePosition() { X = horizontalPositionEmus, Y = verticalPositionEmus },
new DW.HorizontalPosition() { RelativeFrom = DW.HorizontalRelativePositionValues.Page },
new DW.VerticalPosition() { RelativeFrom = DW.VerticalRelativePositionValues.Page },
new DW.Extent() { Cx = imageWidthEmus, Cy = imageHeightEmus },
// Other properties for wrapping, effects, etc.
// ...


Drawing imageElement = new Drawing(
new DW.Anchor(
new DW.SimplePosition() { X = 0L, Y = 0L },
new DW.HorizontalPosition() { RelativeFrom = DW.HorizontalRelativePositionValues.Page },
new DW.VerticalPosition() { RelativeFrom = DW.VerticalRelativePositionValues.Page },
new DW.Extent() { Cx = imageWidthEmus, Cy = imageHeightEmus },
new DW.EffectExtent() { LeftEdge = 0L, TopEdge = 0L, RightEdge = 0L, BottomEdge = 0L },
new DW.WrapSquare(),
// ...


И это просто не работает, или я что-то упускаю:
Drawing imageElement = new Drawing(
new DW.Inline(
new DW.Extent() { Cx = imageWidthEmus, Cy = imageHeightEmus },
new DW.EffectExtent() { LeftEdge = 0L, TopEdge = 0L, RightEdge = 0L, BottomEdge = 0L },
new DW.DocProperties() { Id = (UInt32Value)1U, Name = "Picture" },
new DW.NonVisualGraphicFrameDrawingProperties(new A.GraphicFrameLocks() { NoChangeAspect = true }),



Подробнее здесь: https://stackoverflow.com/questions/778 ... rp-to-word
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»