WPF(XAML) 컨트롤을 XPS 문서로 변환
기존 WPF(XAML) 컨트롤을 가져와서 데이터 바인딩하고 WPF XPS 문서 뷰어를 사용하여 표시 및 인쇄할 수 있는 XPS 문서로 변환할 수 있습니까?만약 그렇다면, 어떻게?그렇지 않다면 XPS/PDF/ 등을 사용하여 WPF에서 '보고'를 어떻게 해야 합니까?
기본적으로 기존 WPF 컨트롤을 가져와서 데이터 바인딩하여 유용한 데이터를 가져온 다음 최종 사용자가 인쇄하고 저장할 수 있도록 하고 싶습니다.문서 작성은 메모리에서 수행되며 사용자가 문서를 특별히 저장하지 않는 한 디스크에 저장하지 않는 것이 이상적입니다.이것이 실현 가능합니까?
실제로 문서 작성기, 컨테이너, 인쇄 큐 및 인쇄 티켓을 사용해야 하는 다양한 샘플 더미를 만지작거린 후, 저는 WPF에서 인쇄에 대한 Eric Sinks 기사를 발견했습니다.
단순화된 코드는 10줄에 불과합니다.
public void CreateMyWPFControlReport(MyWPFControlDataSource usefulData)
{
//Set up the WPF Control to be printed
MyWPFControl controlToPrint;
controlToPrint = new MyWPFControl();
controlToPrint.DataContext = usefulData;
FixedDocument fixedDoc = new FixedDocument();
PageContent pageContent = new PageContent();
FixedPage fixedPage = new FixedPage();
//Create first page of document
fixedPage.Children.Add(controlToPrint);
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
fixedDoc.Pages.Add(pageContent);
//Create any other required pages here
//View the document
documentViewer1.Document = fixedDoc;
}
제 샘플은 상당히 단순합니다. 예상대로 작동하지 않는 전혀 다른 문제 집합이 포함된 페이지 크기 조정 및 방향은 포함되어 있지 않습니다.MS가 문서 뷰어에 저장 버튼을 포함하는 것을 잊은 것처럼 보이기 때문에 저장 기능도 포함되어 있지 않습니다.
기능 저장은 비교적 간단합니다(Eric Sinks 기사의 내용이기도 함).
public void SaveCurrentDocument()
{
// Configure save file dialog box
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "MyReport"; // Default file name
dlg.DefaultExt = ".xps"; // Default file extension
dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension
// Show save file dialog box
Nullable<bool> result = dlg.ShowDialog();
// Process save file dialog box results
if (result == true)
{
// Save document
string filename = dlg.FileName;
FixedDocument doc = (FixedDocument)documentViewer1.Document;
XpsDocument xpsd = new XpsDocument(filename, FileAccess.ReadWrite);
System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
xw.Write(doc);
xpsd.Close();
}
}
예, 기존 WPF(XAML) 컨트롤을 가져와서 데이터를 바인딩하여 XPS 문서로 만들 수 있습니다. 그렇게 어렵지는 않습니다.
언급URL : https://stackoverflow.com/questions/502198/convert-wpf-xaml-control-to-xps-document
'programing' 카테고리의 다른 글
두 지점의 차이를 어떻게 볼 수 있습니까? (0) | 2023.04.27 |
---|---|
SQL Server에 대한 "LIKE"와 "IN"의 조합 (0) | 2023.04.27 |
C로 ':-!!'은 뭐예요? (0) | 2023.04.22 |
오류: "구성 섹션 '시스템.webServer/management/delegation'은 스키마가 없으므로 읽을 수 없습니다. (0) | 2023.04.22 |
텍스트 필드에 "••••••"를 사용하여 비밀번호 숨기기 (0) | 2023.04.22 |