WPF 애플리케이션에서 PDF 인쇄
Contents
[
Hide
]
다음 코드 조각은 Aspose.PDF.Drawing 라이브러리와 함께 작동합니다.
직접 인쇄
Aspose.PDF 라이브러리는 PDF 파일을 XPS로 변환할 수 있는 기능을 가지고 있습니다. 이 기능을 사용하여 문서 인쇄를 구성할 수 있습니다. 직접 인쇄를 위한 예를 살펴봅시다:
private void Print_OnClick(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog
{
Filter = "PDF Documents|*.pdf"
};
openFileDialog.ShowDialog();
Aspose.Pdf.Document document = new Document(openFileDialog.FileName);
var memoryStream = new MemoryStream();
document.Save(memoryStream, SaveFormat.Xps);
var package = Package.Open(memoryStream);
//Xps 패키지를 위한 URI 생성
//여기서 사용되는 Uri는 실제로는 중요하지 않습니다. 이는 PackageStore 내부의 패키지 Uri에 대한 자리 표시자 역할을 합니다.
var inMemoryPackageName = $"memorystream://{Guid.NewGuid()}.xps";
var packageUri = new Uri(inMemoryPackageName);
//패키지를 PackageStore에 추가
PackageStore.AddPackage(packageUri, package);
var xpsDoc = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName);
var fixedDocumentSequence = xpsDoc.GetFixedDocumentSequence();
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
if (fixedDocumentSequence != null)
printDialog.PrintDocument(fixedDocumentSequence.DocumentPaginator, "고정된 문서");
else
throw new NullReferenceException();
}
PackageStore.RemovePackage(packageUri);
xpsDoc.Close();
}
이 경우에는 다음과 같은 단계를 따릅니다:
- OpenFileDialog를 사용하여 PDF 파일 열기
- PDF를 XPS로 변환하고 MemoryStream 객체에 저장
- MemoryStream 객체를 Xps 패키지와 연결
- 패키지를 패키지 저장소에 추가
- 패키지를 기반으로 XpsDocument 생성
- FixedDocumentSequence의 인스턴스 가져오기
- PrintDialog를 사용하여 이 시퀀스를 프린터로 보내기
문서 보기 및 인쇄
많은 경우 사용자는 인쇄하기 전에 문서를 보고 싶어 합니다. 뷰를 구현하기 위해 DocViewer 클래스를 사용할 수 있습니다. 이 접근 방식을 구현하기 위한 대부분의 단계는 이전 예제와 유사합니다.
private void OpenFile_OnClick(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog
{
Filter = "PDF 문서|*.pdf"
};
if (openFileDialog.ShowDialog() == true)
{
var document = new Document(openFileDialog.FileName);
var memoryStream = new MemoryStream();
document.Save(memoryStream, SaveFormat.Xps);
var package = Package.Open(memoryStream);
var inMemoryPackageName = $"memorystream://{Guid.NewGuid()}.xps";
var packageUri = new Uri(inMemoryPackageName);
//패키지를 패키지 저장소에 추가
PackageStore.AddPackage(packageUri, package);
var xpsDoc = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName);
DocViewer.Document = xpsDoc.GetFixedDocumentSequence();
xpsDoc.Close();
};
}