Tôi sử dụng Đường dẫn In WPF để xử lý các biểu đồ lớn lớn được tạo trong ứng dụng của chúng tôi. Toàn bộ sơ đồ bao gồm các hình ảnh.Lưu và in XPSDocument thông qua Trình ngắt (dường như) gây ra sự rasterization nội dung
Cái gọi là "DesignerPaginator" phân loại sơ đồ (nó khá đơn giản). Từ thời điểm này, tôi thực hiện ba điều sau đây: - Tôi in Tài liệu bằng PrintDialog.PrintDocument (Người trích dẫn, Tiêu đề) - Tôi cũng tạo Tài liệu XPS với XpsDocumentWriter.Write (Paginator, PrintTicket); mà tôi lưu trên HDD - Từ XPSDocument tôi gán XpsDocumentWriter.GetFixedDocumentSequence() để một DocumentViewer
Tóm lại, đoạn mã sau là rất quan trọng:
PrintDialog _pdialog = new PrintDialog();
System.Printing.ValidationResult result = this.PrintQueue.MergeAndValidatePrintTicket(this.PrintQueue.UserPrintTicket, this.PrintTicket);
_pdialog.PrintTicket = result.ValidatedPrintTicket;
XpsDocument _xpsDocument = new XpsDocument("C:\\test.xps",FileAccess.ReadWrite);
XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(_xpsDocument);
xpsdw.Write(this.Paginator, result.ValidatedPrintTicket);
documentviewer.Document = _xpsDocument.GetFixedDocumentSequence();
_xpsDocument.Close();
_pdialog.PrintQueue = this.PrintQueue;
_pdialog.PrintDocument(this.Paginator, "Model Test");
Kết quả như sau:
XPS trên HDD -> hoàn toàn mờ. Bạn không thể nhận ra bất cứ điều gì. Nó giống như một tệp GIF với Zoom 100x. FixedDocumentSequence từ XPSDocument trong DocumentViewer -> Hoàn hảo. Tập tin XPS có nghĩa là Đầu ra in -> Kinh khủng, mờ, nhưng ít nhất tốt hơn nhiều so với tệp xps
Và bây giờ phần bí ẩn: Nếu tôi in trực tiếp từ DocumentViewer (trong đó FixedDocumentSequence có vẻ hoàn hảo), tôi nhận được cùng một kết quả mờ từ bản in đầu tiên.
Suy nghĩ của tôi về trường hợp này là hệ thống XPS của WPF rasterize nội dung và đặt các công cụ như bitmap chất lượng thấp trong tài liệu xps. Đó là tất cả các vectơ, và mặc dù thực tế này, đầu ra dường như luôn quen thuộc với một bitmap có độ phân giải thấp.
Tôi sẽ đánh giá cao bất kỳ trợ giúp nào. Tôi hết ý tưởng. Tôi đã cố gắng rất nhiều để gỡ lỗi vấn đề này, nhưng nó bằng cách nào đó có vẻ là một cái gì đó đơn giản và tinh tế cùng một lúc.
Tôi cũng đã chiến đấu rasterization như điên. không vui chút nào. –