Объединить альбомную ориентацию XPS - PullRequest
1 голос
/ 09 марта 2012

Я реализовал это решение, и оно сработало для меня: Можно ли объединить несколько документов xps в один в WPF?

Моя проблема в том, что страницы, которые я хочу объединить, находятся вальбомная ориентация.При добавлении ContainerVisual по умолчанию создается страница в вертикальной ориентации.Как я могу изменить ориентацию на ContainerVisual?

private void AddXPSDocument(string sourceDocument, SerializerWriterCollator vxpsd)
    {
        XpsDocument xpsOld = new XpsDocument(sourceDocument, FileAccess.Read);
        FixedDocumentSequence seqOld = xpsOld.GetFixedDocumentSequence();
        foreach (DocumentReference r in seqOld.References)
        {
            FixedDocument d = r.GetDocument(false);
            foreach (PageContent pc in d.Pages)
            {
                FixedPage fixedPage = pc.GetPageRoot(false);
                double width = fixedPage.Width;
                double height = fixedPage.Height;

                Size sz = new Size(width, height);
                fixedPage.Width = width;
                fixedPage.Height = height;
                fixedPage.Measure(sz);

                fixedPage.Arrange(new Rect(new Point(), sz));


                //fixedPage.UpdateLayout();

                ContainerVisual newPage = new ContainerVisual();
                newPage.Children.Add(fixedPage);

                vxpsd.Write(newPage);

            }
        }
        xpsOld.Close();
    }

1 Ответ

1 голос
/ 09 марта 2012

Вам необходимо добавить RotateTransform к странице визуального.

Visual originalPage = Paginator.GetPage(pageNumber).Visual;

var pageContentVisual = new ContainerVisual();

TransformGroup group = new TransformGroup();
group.Children.Add(new RotateTransform { Angle = 90.0 });

pageContentVisual.Transform = group;
pageContentVisual.Children.Add(originalPage);

Примечание: Выше был скопирован из пользовательского DocumentPaginator, однако вы сможете применить его в вашей ситуации.

...