Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft .NET ile, Windows Presentation Foundation (WPF) kullanan uygulama geliştiricilerin zengin bir yazdırma ve yazdırma sistemi yönetim API'leri kümesi vardır. Bu işlevin temeli XML Kağıt Belirtimi (XPS) dosya biçimi ve XPS yazdırma yoludur.
XPS hakkında
XPS elektronik belge biçimi, biriktirici dosya biçimi ve sayfa açıklama dilidir. Platformlar arası belgeler oluşturmak için XML, Open Packaging Conventions ve diğer sektör standartlarını kullanan açık bir belge biçimidir. XPS dijital belgelerin oluşturulduğu, paylaşıldığı, yazdırıldığı, görüntülendiği ve arşivlendiği süreci basitleştirir. XPS hakkında daha fazla bilgi için bkz. XPS Belgeleri.
XPS yazdırma yolu
XPS yazdırma yolu, Yazdırmanın Windows uygulamalarında nasıl işleneceğini yeniden tanımlayan bir Windows özelliğidir. XPS yazdırma yolu şunun yerini alabilir:
- Zengin Metin Biçimi veya Taşınabilir Belge Biçimi gibi belge sunu dilleri.
- Windows Meta Dosyası veya Gelişmiş Meta Dosyası (EMF) gibi yazdırma biriktiricisi biçimleri.
- Yazıcı Komut Dili veya PostScript gibi sayfa açıklaması dilleri.
Sonuç olarak, XPS yazdırma yolu, uygulama yayınından yazıcı sürücüsünde veya cihazda son işlemeye kadar XPS biçimini korur.
XPS belgeleri için yazdırma biriktiricisi hem XPS yazdırma yolunu hem de GDI yazdırma yolunu destekler. XPS yazdırma yolu yerel olarak bir XPS biriktirici dosyası tüketir ve bir XPS yazıcı sürücüsü gerektirir. XPS yazdırma yolu, XPS yazıcı sürücüsü (XPSDrv) modeli üzerine kurulmuştur.
XPS yazdırma yolunun avantajları şunlardır:
- WYSIWYG yazdırma desteği.
- Kanal başına 32 bit, CMYK renk modeli, adlandırılmış renkler, n mürekkepler, saydamlıklar ve gradyanlar gibi gelişmiş renk profillerinin yerel desteği.
- Geliştirilmiş yazdırma performansı— XPS özellikleri ve geliştirmeleri yalnızca XPS yazdırma yolunu hedefleyen uygulamalar tarafından kullanılabilir.
- Endüstri standardı XPS biçimi.
Temel yazdırma senaryoları için, yazdırma yapılandırması ve iş gönderimi için standart bir kullanıcı arabirimiyle basit ve sezgisel bir API kullanılabilir. Gelişmiş senaryolar için API, kullanıcı arabirimi özelleştirmesini destekler veya kullanıcı arabirimini hiç desteklemez, zaman uyumlu veya zaman uyumsuz yazdırma ve toplu yazdırma özelliklerini destekler. Hem basit hem de gelişmiş seçenekler, tam veya kısmi güven modlarında yazdırma desteği sağlar.
XPS, genişletilebilirlik göz önünde bulundurularak tasarlanmıştır, bu nedenle özellikler ve özellikler XPS'ye modüler bir şekilde eklenebilir. Genişletilebilirlik özellikleri şunlardır:
- Cihaz özelliklerinin hızlı uzantısını destekleyen bir yazdırma şeması. Şemanın genel bölümü, istenen cihaz özelliklerini eklemek için düzenli olarak güncelleştirilir. Daha fazla bilgi için bkz. Genişletilebilir mimari.
- XPSDrv sürücülerinin, XPS belgelerinin hem doğrudan hem de ölçeklenebilir yazdırmasını desteklemek için kullandığı genişletilebilir bir filtre işlem hattı. Daha fazla bilgi için bkz. XPSDrv yazıcı sürücüleri.
Yazdırma yolu mimarisi
WPF uygulamaları XPS yazdırma yolunu yerel olarak destekler ve DOĞRUDAN XPSDrv sürücüsüne yazdırmak için XPS yazdırma API'lerini kullanabilir. Yazma işleminin hedef yazdırma kuyruğu bir XPSDrv sürücüsüne sahip değilse, Write sınıfının WriteAsync ve XpsDocumentWriter yöntemleri, GDI yazdırma yolu için içeriği otomatik olarak XPS'den GDI biçimine dönüştürür.
Aşağıdaki çizim, yazdırma alt sistemini gösterir ve Microsoft ile bağımsız yazılım ve donanım satıcıları tarafından sağlanan bölümleri tanımlar.
Temel XPS yazdırma
WPF'de hem temel hem de gelişmiş yazdırma özelliklerini destekleyen bir yazdırma API'si vardır. Kapsamlı yazdırma özelleştirmesi veya eksiksiz XPS özellik kümesine erişim gerektirmeyen uygulamalar için temel yazdırma desteği yeterli olabilir. Temel yazdırma desteği, en az yapılandırma gerektiren, tanıdık bir kullanıcı arabirimine sahip olan ve birçok XPS özelliğini destekleyen PrintDialog denetimi aracılığıyla sağlanır.
PrintDialog
System.Windows.Controls.PrintDialog denetimi kullanıcı arabirimi, yapılandırma ve XPS işi gönderimi için tek bir giriş noktası sağlar. Denetimi nasıl başlatıp kullanacağınızı öğrenmek için Yazdırma İletişim Kutusunu Görüntülemebaşlığına bakın.
Gelişmiş XPS yazdırma
XPS özelliklerinin kapsamlı kümesine erişmek için ileri seviye yazdırma API'sini kullanın. PrintTicket, PrintCapabilities, PrintServer, PrintQueueve XpsDocumentWriterdahil olmak üzere bu bölümde çeşitli ilgili API'ler açıklanmıştır. XPS yazdırma yolu API'lerinin tam listesi için System.Windows.Xps ve System.Printing ad alanlarına bakın.
PrintTicket ve Baskı Yetenekleri
PrintTicket ve PrintCapabilities sınıfları, gelişmiş XPS özelliklerinin temelini oluşturur. Her iki nesne de yazdırma şeması tarafından tanımlanan yazdırma odaklı özelliklerin XML biçimli yapılarını içerir. Bu özellikler arasında çift yönlü, harmanlama, iki taraflı yazdırma ve zımbalama yer alır.
PrintTicket, yazıcıya yazdırma işinin nasıl işlendiği hakkında bilgi sağlar.
PrintCapabilities sınıfı, yazıcının özelliklerini tanımlar. Yazıcının özelliklerini sorgulayarak, yazıcının desteklenen özelliklerinden tam olarak yararlanan bir PrintTicket oluşturulabilir. Benzer şekilde, desteklenmeyen özellikler önlenebilir.
Aşağıdaki örnek, bir yazıcının PrintCapabilities sorgular ve kod kullanarak bir PrintTicket oluşturur.
/// <summary>
/// Returns a print ticket, which is a set of instructions telling a printer how
/// to set its various features, such as duplexing, collating, and stapling.
/// </summary>
/// <param name="printQueue">The print queue to print to.</param>
/// <returns>A print ticket.</returns>
public static PrintTicket GetPrintTicket(PrintQueue printQueue)
{
PrintCapabilities printCapabilites = printQueue.GetPrintCapabilities();
// Get a default print ticket from printer.
PrintTicket printTicket = printQueue.DefaultPrintTicket;
// Modify the print ticket.
if (printCapabilites.CollationCapability.Contains(Collation.Collated))
printTicket.Collation = Collation.Collated;
if (printCapabilites.DuplexingCapability.Contains(Duplexing.TwoSidedLongEdge))
printTicket.Duplexing = Duplexing.TwoSidedLongEdge;
if (printCapabilites.StaplingCapability.Contains(Stapling.StapleDualLeft))
printTicket.Stapling = Stapling.StapleDualLeft;
// Returns a print ticket, which is a set of instructions telling a printer how
// to set its various features, such as duplexing, collating, and stapling.
return printTicket;
}
''' <summary>
''' Returns a print ticket, which is a set of instructions telling a printer how
''' to set its various features, such as duplexing, collating, and stapling.
''' </summary>
''' <param name="printQueue">The print queue to print to.</param>
''' <returns>A print ticket.</returns>
Public Shared Function GetPrintTicket(printQueue As PrintQueue) As PrintTicket
Dim printCapabilites As PrintCapabilities = printQueue.GetPrintCapabilities()
' Get a default print ticket from printer.
Dim printTicket As PrintTicket = printQueue.DefaultPrintTicket
' Modify the print ticket.
If printCapabilites.CollationCapability.Contains(Collation.Collated) Then
printTicket.Collation = Collation.Collated
End If
If printCapabilites.DuplexingCapability.Contains(Duplexing.TwoSidedLongEdge) Then
printTicket.Duplexing = Duplexing.TwoSidedLongEdge
End If
If printCapabilites.StaplingCapability.Contains(Stapling.StapleDualLeft) Then
printTicket.Stapling = Stapling.StapleDualLeft
End If
' Returns a print ticket, which is a set of instructions telling a printer how
' to set its various features, such as duplexing, collating, and stapling.
Return printTicket
End Function
PrintServer ve PrintQueue
PrintServer sınıfı bir ağ yazdırma sunucusunu, PrintQueue sınıfı ise bir yazıcıyı ve onunla ilişkilendirilmiş çıkış işi sırasını temsil eder. Bu API'ler birlikte bir sunucu için yazdırma işlerinin gelişmiş yönetimini destekler. Bir PrintServerveya onun türetilmiş sınıflarından biri, bir PrintQueue'i yönetmek için kullanılır.
Aşağıdaki örnek, kodu kullanarak bir LocalPrintServer oluşturur ve yerel bilgisayarın PrintQueueCollection'ine erişir.
/// <summary>
/// Return a collection of print queues, which individually hold the features or states
/// of a printer as well as common properties for all print queues.
/// </summary>
/// <returns>A collection of print queues.</returns>
public static PrintQueueCollection GetPrintQueues()
{
// Create a LocalPrintServer instance, which represents
// the print server for the local computer.
LocalPrintServer localPrintServer = new();
// Get the default print queue on the local computer.
//PrintQueue printQueue = localPrintServer.DefaultPrintQueue;
// Get all print queues on the local computer.
PrintQueueCollection printQueueCollection = localPrintServer.GetPrintQueues();
// Return a collection of print queues, which individually hold the features or states
// of a printer as well as common properties for all print queues.
return printQueueCollection;
}
''' <summary>
''' Return a collection of print queues, which individually hold the features or states
''' of a printer as well as common properties for all print queues.
''' </summary>
''' <returns>A collection of print queues.</returns>
Public Shared Function GetPrintQueues() As PrintQueueCollection
' Create a LocalPrintServer instance, which represents
' the print server for the local computer.
Dim localPrintServer As LocalPrintServer = New LocalPrintServer()
' Get the default print queue on the local computer.
'Dim printQueue As PrintQueue = localPrintServer.DefaultPrintQueue
' Get all print queues on the local computer.
Dim printQueueCollection As PrintQueueCollection = localPrintServer.GetPrintQueues()
' Return a collection of print queues, which individually hold the features or states
' of a printer as well as common properties for all print queues.
Return printQueueCollection
End Function
XpsBelgeYazıcı
XpsDocumentWriter, birçok Write ve WriteAsync yöntemiyle XPS belgelerini bir PrintQueueiçine eklemek için kullanılır. Örneğin, Write(FixedDocumentSequence, PrintTicket) yöntemi, yazdırma bileti içeren bir XPS belgesini zaman uyumlu bir şekilde kuyruğa eklemek için kullanılır. WriteAsync(FixedDocumentSequence, PrintTicket) yöntemi, yazdırma bileti içeren bir XPS belgesini zaman uyumsuz olarak kuyruğa eklemek için kullanılır.
Aşağıdaki örnek bir XpsDocumentWriter oluşturur ve kod kullanarak XPS belgelerini hem eşzamanlı hem de eşzamansız olarak PrintQueue ekler.
/// <summary>
/// Asynchronously, add the XPS document together with a print ticket to the print queue.
/// </summary>
/// <param name="xpsFilePath">Path to source XPS file.</param>
/// <param name="printQueue">The print queue to print to.</param>
/// <param name="printTicket">The print ticket for the selected print queue.</param>
public static void PrintXpsDocumentAsync(string xpsFilePath, PrintQueue printQueue, PrintTicket printTicket)
{
// Create an XpsDocumentWriter object for the print queue.
XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printQueue);
// Open the selected document.
XpsDocument xpsDocument = new(xpsFilePath, FileAccess.Read);
// Get a fixed document sequence for the selected document.
FixedDocumentSequence fixedDocSeq = xpsDocument.GetFixedDocumentSequence();
// Asynchronously, add the XPS document together with a print ticket to the print queue.
xpsDocumentWriter.WriteAsync(fixedDocSeq, printTicket);
}
/// <summary>
/// Synchronously, add the XPS document together with a print ticket to the print queue.
/// </summary>
/// <param name="xpsFilePath">Path to source XPS file.</param>
/// <param name="printQueue">The print queue to print to.</param>
/// <param name="printTicket">The print ticket for the selected print queue.</param>
public static void PrintXpsDocument(string xpsFilePath, PrintQueue printQueue, PrintTicket printTicket)
{
// Create an XpsDocumentWriter object for the print queue.
XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printQueue);
// Open the selected document.
XpsDocument xpsDocument = new(xpsFilePath, FileAccess.Read);
// Get a fixed document sequence for the selected document.
FixedDocumentSequence fixedDocSeq = xpsDocument.GetFixedDocumentSequence();
// Synchronously, add the XPS document together with a print ticket to the print queue.
xpsDocumentWriter.Write(fixedDocSeq, printTicket);
}
''' <summary>
''' Asynchronously, add the XPS document together with a print ticket to the print queue.
''' </summary>
''' <param name="xpsFilePath">Path to source XPS file.</param>
''' <param name="printQueue">The print queue to print to.</param>
''' <param name="printTicket">The print ticket for the selected print queue.</param>
Public Shared Sub PrintXpsDocumentAsync(xpsFilePath As String, printQueue As PrintQueue, printTicket As PrintTicket)
' Create an XpsDocumentWriter object for the print queue.
Dim xpsDocumentWriter As XpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printQueue)
' Open the selected document.
Dim xpsDocument As XpsDocument = New XpsDocument(xpsFilePath, FileAccess.Read)
' Get a fixed document sequence for the selected document.
Dim fixedDocSeq As FixedDocumentSequence = xpsDocument.GetFixedDocumentSequence()
' Asynchronously, add the XPS document together with a print ticket to the print queue.
xpsDocumentWriter.WriteAsync(fixedDocSeq, printTicket)
End Sub
''' <summary>
''' Synchronously, add the XPS document together with a print ticket to the print queue.
''' </summary>
''' <param name="xpsFilePath">Path to source XPS file.</param>
''' <param name="printQueue">The print queue to print to.</param>
''' <param name="printTicket">The print ticket for the selected print queue.</param>
Public Shared Sub PrintXpsDocument(xpsFilePath As String, printQueue As PrintQueue, printTicket As PrintTicket)
' Create an XpsDocumentWriter object for the print queue.
Dim xpsDocumentWriter As XpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printQueue)
' Open the selected document.
Dim xpsDocument As XpsDocument = New XpsDocument(xpsFilePath, FileAccess.Read)
' Get a fixed document sequence for the selected document.
Dim fixedDocSeq As FixedDocumentSequence = xpsDocument.GetFixedDocumentSequence()
' Synchronously, add the XPS document together with a print ticket to the print queue.
xpsDocumentWriter.Write(fixedDocSeq, printTicket)
End Sub
GDI yazdırma yolu
WPF uygulamaları XPS yazdırma yolunu yerel olarak desteklese de, Write sınıfının WriteAsync veya XpsDocumentWriter yöntemlerinden birini çağırıp XpsDrv olmayan bir yazıcı için yazdırma kuyruğu seçerek GDI yazdırma yoluna da çıkış yapabilir.
XPS işlevselliği veya desteği gerektirmeyen uygulamalar için geçerli GDI yazdırma yolu değişmeden kalır. GDI yazdırma yolu ve çeşitli XPS dönüştürme seçenekleri hakkında daha fazla bilgi için bkz. Microsoft XPS belge dönüştürücüsü (MXDC) ve XPSDrv yazıcı sürücüleri.
XPSDrv sürücü modeli
XPS yazdırma yolu, XPS özellikli bir yazıcıya veya sürücüye yazdırırken yerel yazdırma havuzu biçimi olarak XPS kullanarak bellek verimliliğini artırır. Uygulama çıkışını, işleme hizmetleri için GDI'ya çağrı dizisi olarak temsil eden EMF'nin aksine, XPS biriktirici biçimi belgeyi temsil eder. Bu nedenle, XPS biriktiricisi dosyaları XPS tabanlı bir yazıcı sürücüsüne çıktı olarak gönderildiğinde, sürücüler doğrudan bu biçimdeki veriler üzerinde çalıştığından daha fazla yorumlanmaya gerek duymazlar. Bu özellik, EMF dosyaları ve GDI tabanlı yazdırma sürücüleri için gereken veri ve renk alanı dönüştürmelerini ortadan kaldırır.
Basitleştirilmiş biriktirme işlemi, belge biriktirilmeden önce EMF veri dosyası gibi bir ara biriktirici dosyası oluşturma gereksinimini ortadan kaldırır. Daha küçük biriktirici dosya boyutlarıyla XPS yazdırma yolu ağ trafiğini azaltabilir ve yazdırma performansını artırabilir. EMF eşdeğerleriyle karşılaştırıldığında, XPS yazdırma yolu kullanıldığında XPS yığın dosyası boyutları genellikle azalır. Biriktirme dosyası boyutunu küçültme işlemi çeşitli mekanizmalar aracılığıyla yapılmaktadır:
- Yazı Tipi alt ayarı, yalnızca bir belge içinde kullanılan karakterleri XPS dosyasında depolar.
- Gelişmiş grafikler, XPS içeriğinin rasterleştirilmesini önlemek için saydamlığı ve gradyan temel öğelerini yerel olarak destekleyendestekler.
- belge içinde birden çok kez kullanılan bir şirket logosunun resmi gibiortak kaynakların tanımlanması. Ortak kaynaklar paylaşılan kaynaklar olarak kabul edilir ve yalnızca bir kez yüklenir.
- , tüm XPS belgelerinde kullanılan ZIP sıkıştırma.
Vektör grafik son derece karmaşık, çok katmanlı veya verimsiz yazılmışsa, XPS kuyruk dosyasının boyutu azaltılamayabilir. GDI biriktirici dosyalarının aksine, XPS dosyaları ekran görüntüleme amacıyla cihaz yazı tiplerini ve bilgisayar tabanlı yazı tiplerini ekler, ancak her iki tür yazı tipi de alt kümelenir ve yazıcı sürücüleri dosyayı yazıcıya iletmeden önce cihaz yazı tiplerini kaldırabilir.
Tavsiye
ayrıca PrintQueue.AddJob yöntemleri kullanarak XPS dosyalarını yazdırabilirsiniz. Daha fazla bilgi için bkz. XPS dosyalarını yazdırma.
Ayrıca bakınız
- PrintDialog
- XpsDocumentWriter
- XpsDocument
- PrintTicket
- PrintCapabilities
- PrintServer
- PrintQueue
- Nasıl Yapılır konuları
- WPF'de Dokümanlar
- XPS belgelerini
- belge serileştirme ve depolama
- Microsoft XPS belge dönüştürücüsü (MXDC)
.NET Desktop feedback