【问题标题】:Merge XPS landscape orientation合并 XPS 横向
【发布时间】:2012-03-09 11:34:29
【问题描述】:

我已经实施了这个解决方案,它对我有用: Can multiple xps documents be merged to one in 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();
    }

【问题讨论】:

    标签: wpf merge landscape xps


    【解决方案1】:

    您需要在页面视觉对象中添加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 复制而来,但是您应该能够根据您的情况应用它。

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多