2012-03-09 73 views
1

我實現了這個解決方案,它爲我工作: Can multiple xps documents be merged to one in WPF?合併XPS橫向

我的問題是,我要合併的頁面在橫向方向。當添加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

你需要一個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複製,但是你應該能夠運用它的情況。

+0

謝謝,它的工作原理! – Sergio 2012-03-09 12:39:27