Condividi tramite


Supporto delle app per la stampa OpenXPS

OpenXPS è il formato Open XML Paper Specification per i documenti ed è basato sulla specifica standard ECMA (European Computer Manufacturers Association).

Windows 8 offre supporto completo per la stampa OpenXPS tramite il modello di driver di stampa v4, affiancato al supporto continuo per il formato Microsoft XPS. Questo argomento è incentrato sulla parte di questo supporto rilevante per gli sviluppatori di applicazioni Windows. Per informazioni sui requisiti dei driver per il supporto openXPS, vedere Driver Support for OpenXPS.

Invio di dati XPS al sistema di stampa

È consigliabile usare IPrintDocumentPackageTarget per l'invio di tutti i processi di stampa XPS al sistema di stampa. IPrintDocumentPackageTarget accetta il modello a oggetti XPS (OM) senza serializzazione e consente di migliorare le prestazioni complessive.

Ecco un breve riepilogo dell'interfaccia IPrintDocumentPackageTarget:

  • Questa interfaccia supporta la stampa da soluzioni personalizzate e applicazioni desktop.

  • Per le app desktop, questa opzione può essere usata al posto di StartXpsPrintJob1.

  • Disponibile in Windows 7 con Service Pack 1 (SP1) + Aggiornamento della piattaforma e Windows 8.

  • Includere DocumentTarget.h nei progetti per usare queste API.

Le applicazioni che utilizzano documenti OpenXPS devono notare che il tipo MIME per OpenXPS è il seguente:

application\\oxps

Invio di dati OpenXPS all'API di stampa XPS

Specifico di OpenXPS, XPS OM accetta sia MSXPS che OpenXPS e fornisce metodi per la conversione e la serializzazione in entrambi i formati. Ciò consente agli sviluppatori di applicazioni di essere indipendenti dal driver di destinazione, se lo desiderano. Ciò significa anche che gli sviluppatori di app possono sempre inviare processi di stampa come XPS OM a StartXpsPrintJob1 o IDocumentPackageTarget, sapendo che il sistema di stampa gestirà qualsiasi conversione necessaria.

Naturalmente, impedendo la conversione tra i formati XPS, le prestazioni end-to-end miglioreranno. Dall'applicazione, lo sviluppatore può controllare la chiave del Registro di sistema seguente per determinare il formato XPS preferito del driver di stampa di destinazione:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\[PrintDriverName]\PrintDriverData\XpsFormat

Dopo aver determinato il formato XPS preferito, l'applicazione può fornire oggetti XPS OM che non richiederanno la conversione. Di particolare nota è l'uso di foto HD in MSXPS e JPEGXR in OpenXPS. La conversione da JPEGXR a FOTO HD è relativamente leggera perché la differenza principale in questa conversione è che Foto HD ignora 4 bit di controllo richiesti da JPEGXR. Tuttavia, la conversione da HD Photo a JPEGXR richiede che l'intera immagine venga codificata nuovamente per generare i bit di controllo necessari. Pertanto, fornire immagini JPEGXR per immagini ad alta risoluzione garantirà la compatibilità con OpenXPS e ridurrà al minimo il costo di conversione dell'immagine per MSXPS.

L'intestazione Xpsobjectmodel_1.h definisce le API e gli oggetti aggiuntivi per OpenXPS. L'interfaccia IXpsOMObjectFactory1 fornisce metodi aggiuntivi per la conversione delle immagini. Ecco la sintassi:

IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);

IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);

Windows 8 fornisce le enumerazioni nuove e aggiornate seguenti.

Nuova enumerazione:

TIPO_DOCUMENTO_XPS

Enumerazione aggiornata

XPS_IMAGE_TYPE

I nuovi metodi GetDocumentType consentono a un'applicazione di determinare il formato XPS dei documenti. Sono disponibili in IXpsOMObjectFactory1, IXpsOMPackage1e IXpsOMPage1. Ecco un elenco dei metodi.

IXpsOMObjectFactory1::GetDocumentTypeFromFile
IXpsOMObjectFactory1::GetDocumentTypeFromStream
IXpsOMPackage1::GetDocumentType
IXpsOMPage1::GetDocumentType

Windows 8 fornisce i nuovi codici di errore seguenti a supporto di OpenXPS:

XPS\_E\_MISMATCHED\_NAMESPACE.
Questo errore viene restituito se è presente uno spazio dei nomi non corrispondente.
XPS\_E\_RIFERIMENTO\_ASSOLUTO
Questo errore viene restituito se MSXPS usa URI assoluti nei riferimenti interni o tenta di usare riferimenti interni per serializzare nel flusso. Ciò è dovuto al fatto che XPS OM genera URI relativi. Anche se MSXPS supporta URI relativi e assoluti, OpenXPS richiede URI relativi.

supporto driver per OpenXPS

IPrintDocumentPackageTarget

IXpsOMObjectFactory1::GetDocumentTypeFromFile

IXpsOMObjectFactory1::GetDocumentTypeFromStream

IXpsOMPackage1::GetDocumentType

IXpsOMPage1::GetDocumentType

XPS_DOCUMENT_TYPE

XPS_IMAGE_TYPE