2012-03-09 3 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