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, side-by-side con 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 di OpenXPS, vedere Supporto driver per OpenXPS.
Invio di dati XPS al sistema di stampa
È consigliabile usare IPrintDocumentPackageTarget per inviare 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 operazione 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 usano documenti OpenXPS devono notare che il tipo MIME per OpenXPS è il seguente:
- application\\oxps
Invio di dati OpenXPS all'API di stampa XPS
Specifico per 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 agnostici del driver di destinazione, se vogliono. 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 formati XPS migliora le prestazioni end-to-end. 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 richiedono 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 poiché la differenza primaria in questa conversione è che La foto HD ignora 4 bit di controllo che JPEGXR richiede. Tuttavia, la conversione da FOTO HD a JPEGXR richiede che l'intera immagine venga ri codificata per generare i bit di controllo necessari. Pertanto, fornendo 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. E l'interfaccia IXpsOMObjectFactory1 offre metodi aggiuntivi per la conversione di immagini. Ecco la sintassi:
IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);
IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);
Windows 8 fornisce le enumerazioni nuove e aggiornate seguenti.
Nuova enumerazione:
Enumerazione aggiornata
I nuovi metodi GetDocumentType consentono a un'applicazione di determinare il formato XPS dei documenti. Sono disponibili in IXpsOMObjectFactory1, IXpsOMPackage1 e IXpsOMPage1. Ecco un elenco dei metodi.
IXpsOMObjectFactory1::GetDocumentTypeFromFile
IXpsOMObjectFactory1::GetDocumentTypeFromStream
IXpsOMPackage1::GetDocumentType
IXpsOMPage1::GetDocumentType
Windows 8 fornisce i nuovi codici di errore seguenti al supporto di OpenXPS:
- XPS\_E\_MISMATCHED\_NAMESPACE.
- Questo errore viene restituito, se è presente uno spazio dei nomi non corrispondente.
- 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.
Argomenti correlati