저는 11 명의 담당자 만 있기 때문에 의견을 남길 수는 없지만 도움이 될만한 정보를 제공하려고 노력할 것입니다.
두 가지 : FixedDocument
을 어떻게 생성하고 FixedPage
을 생성하는지에 따라 달라질 수 있습니다. 처음에 FixedPage
을 생성 한 다음 FixedDocument
에 추가하면 시도 할 수있는 한 가지를 생각해 볼 수 있습니다.
또한 페이지를 인쇄하는 방법, 각 페이지를 인쇄하는 방법 또는 한 번 인쇄를 호출하고 전체 문서를 인쇄 할 것인지 여부에 따라 다릅니다.
어쨌든 고정 된 페이지를 문서에 추가하기 전에 크기를 조정하는 방법 중 하나입니다. 인쇄 대화 상자를 사용하는 경우 인쇄 티켓 속성을 가져 와서 컨트롤이나 사용자의 크기를 원하는 크기로 조정하십시오.
이
이 나를 위해 일한 :
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var fp1 = new FixedPage() {Height=1056, Width =816};
var g = new Grid();
g.Children.Add(new Rectangle { Height = 1056, Width = 816, Fill = Brushes.Orange });
fp1.Children.Add(g);
var fp2 = new FixedPage() { Height = 816, Width = 1056 };
var g1 = new Grid();
g1.Children.Add(new Rectangle { Height = 816, Width = 1056, Fill = Brushes.Pink });
fp2.Children.Add(g1);
var fd = new FixedDocument();
fd.Pages.Add(new PageContent{Child = fp1 });
fd.Pages.Add(new PageContent{Child = fp2 });
var d = new XpsDocument(@"C:\users\me\desktop\tmp.xps",
FileAccess.ReadWrite);
var doc =
XpsDocument.CreateXpsDocumentWriter(d);
doc.Write(fd);
d.Close();
}
그리고 tmp.xps Windows 탐색기 미리보기에서 보이는 같은 :
의 당신이 그것을 인쇄하지 않을 가정 해 봅시다 파일로 보내거나 프린터로 보내려는 경우에도 마찬가지입니다.
var hardCopy = fd.DocumentPaginator;
var pd = new PrintDialog();
if(pd.ShowDialog() == true)
{
pd.PrintQueue.AddJob("My Document",
@"C:\users\me\desktop\tmp.xps",
false);
}
참고 : XPS 장치를 사용하여 인쇄하는 경우 인쇄 밖으로 만 올바른 방향이있을 것이다. PrintQueue.IsXpsDevice
사용자의 요구에 맞지 않으면 각 페이지에 대한 인쇄를 처리 할 수있는 DocumentPaginator
을 직접 작성해야합니다. 여기에있는 한 가지 옵션은 영상/페이지가 DocumentPaginator.GetPage(int index)
에서 호출 될 때 변형시키는 것입니다. UI 특성을 변경하면 각 페이지에 대해 Measure, Arrange 및 UpdateLayout을 호출해야합니다.
출처
2014-12-26 21:04:48
KCL