Recent from talks
All channels
Be the first to start a discussion here.
Be the first to start a discussion here.
Be the first to start a discussion here.
Be the first to start a discussion here.
Welcome to the community hub built to collect knowledge and have discussions related to Open XML Paper Specification.
Nothing was collected or created yet.
Open XML Paper Specification
View on Wikipediafrom Wikipedia
Not found
Open XML Paper Specification
View on Grokipediafrom Grokipedia
The Open XML Paper Specification (OpenXPS) is an international open standard for a page description language and fixed-document format, defined by Ecma International as ECMA-388 and first published in June 2009.[1] It employs XML, along with technologies such as ZIP compression via the Open Packaging Conventions (OPC), Unicode, and the Markup Compatibility and Extensibility standard, to precisely describe the content, layout, and appearance of paginated electronic documents in a platform-independent manner.[2] Designed as a final-form representation for viewing, printing, distribution, and archiving, OpenXPS encapsulates all necessary resources—including vector graphics, raster images (such as JPEG, PNG, and TIFF), fonts (including OpenType and subsets), and metadata—within a single, self-contained package, ensuring consistent rendering without dependency on the originating application.[2] The format uses a hierarchical structure of FixedDocumentSequence, FixedDocument, and FixedPage elements to organize pages, supporting features like digital signatures for document integrity and accessibility tags for structured navigation.[3]
OpenXPS originated from Microsoft's proprietary XML Paper Specification (XPS), which was introduced in January 2007 with Windows Vista and integrated into Office 2007 and the .NET Framework 3.0 as a spool file format and printer driver technology.[4] In September 2007, Microsoft submitted XPS to Ecma International's Technical Committee 46 (TC46) for standardization, leading to the creation of OpenXPS as a reorganized, royalty-free version that removes Microsoft-specific extensions while maintaining compatibility.[2] This standardization effort aimed to promote interoperability across software and hardware systems, with ECMA-388 extending OPC (ECMA-376) to define the document package format.[1] Since Windows 8 in 2012, OpenXPS (with the .oxps file extension) has served as the default output for the Microsoft XPS Document Writer and underlies the Windows "XPS print path," while XPS (.xps files) remains supported for legacy compatibility, with conversion tools available via the Windows Driver Kit.[5][2]
Key technical aspects of OpenXPS include its use of XML markup for elements like Path and Glyphs to handle vector paths, text rendering, and precise positioning, alongside support for advanced features such as 3D models via X3D embedding and high-dynamic-range imaging with JPEG XR.[2] The format is licensed royalty-free under Ecma and Microsoft policies, with full documentation freely available, contributing to its sustainability despite limited adoption beyond Microsoft ecosystems.[2] As a fixed-layout alternative to reflowable formats like PDF, OpenXPS emphasizes preservation of exact visual fidelity, making it suitable for high-quality printing and long-term digital archiving.[4]
Format and Structure
Document Composition
The Open XML Paper Specification (OpenXPS) defines a fixed-document format as a ZIP-compressed package that conforms to the Open Packaging Conventions (OPC), which provide a standardized model for organizing content into discrete parts and relationships within a ZIP archive.[6] This structure supports a parts-based document model, where the payload is fixed and hierarchical, consisting of at least one root FixedDocumentSequence part, one or more FixedDocument parts, and one or more FixedPage parts per document, ensuring a paginated layout that cannot be reflowed.[6] At the core of an OpenXPS document's composition are key XML files that define its logical organization. The FixedDocumentSequence.xml file serves as the root part, using<DocumentReference> elements to sequence and reference multiple FixedDocument parts, establishing the overall document structure and print ticket associations.[6] Each FixedDocument.xml file, in turn, indexes the pages within a single document via <PageContent> elements that link to individual FixedPage parts, including their order and any applicable print tickets.[6] The content of each page is described in a Page.xml file, which employs Extensible Application Markup Language (XAML) to mark up visual elements such as paths, glyphs, and canvases, enabling precise rendering of the fixed layout.[6]
Resource parts, including images, fonts, and thumbnails, are stored separately within the package to promote modularity and reuse, linked through relationship files (RELS) that define required or optional dependencies.[6] Images in formats like JPEG, PNG, TIFF, or JPEG XR are encapsulated as individual parts and referenced via Required Resource relationships in the RELS files of the consuming FixedPage or FixedDocument.[6] Fonts, typically in OpenType format, are similarly stored and linked to ensure consistent typography across the document, while thumbnails provide preview representations tied through relationships for quick navigation.[6] These relationships adhere to OPC standards, using XML to specify URIs and types, such as http://schemas.openxps.org/2009/relationships/image for image parts.[6]
OpenXPS incorporates Markup Compatibility and Extensibility (MCE) mechanisms to enable XML extensibility while maintaining backward compatibility, drawing from standards in the Office Open XML (OOXML) specification.[6] MCE allows for versioning through namespace prefixes (e.g., mc: for markup compatibility attributes like mc:Ignorable), enabling processors to ignore or process unknown elements and attributes during validation, which supports third-party extensions without breaking core schema conformance.[6] In the XAML-based Page.xml files, vectors are represented using <Path> elements with a Data attribute defining geometries via <PathGeometry>, <PathFigure>, and segments like <PolyLineSegment> or <ArcSegment>, complete with attributes such as FillRule and IsClosed for rendering control.[6] Text is encoded through <Glyphs> elements, specifying UnicodeString for character data, FontUri for font references, and Indices for glyph positioning and bidi support, ensuring device-independent layout.[6] Paths, as subsets of vectors, are constructed within <PathFigure> using segment types like <PolyBezierSegment>, integrated with transformations and styling attributes like Stroke and Fill for precise graphical composition.[6]
File Extensions and Packaging
Open XML Paper Specification documents are packaged using the Open Packaging Conventions (OPC), a ZIP-based container format that organizes XML markup, resources, and relationships into a single file. The original Microsoft implementation uses the .xps file extension, while the standardized OpenXPS format employs .oxps to distinguish it as compliant with ECMA-388, which enforces stricter adherence to OPC requirements such as standardized namespace URIs and the exclusion of platform-specific features like Windows color management extensions. Both formats encapsulate all necessary components—including fixed XML pages, embedded fonts, and images—within the ZIP structure, ensuring self-contained documents suitable for archival and distribution.[6] The MIME type for .xps files is application/vnd.ms-xpsdocument, registered by Microsoft for its proprietary XML Paper Specification documents. In contrast, .oxps files use the MIME type application/oxps, as defined for the ECMA-388 OpenXPS standard to promote interoperability across systems. Packages can be identified by extracting the ZIP archive and verifying the presence of core OPC files, such as [Content_Types].xml at the root (specifying content types like application/vnd.ms-package.xps-fixeddocument for pages) and the _rels/.rels relationship file, which outlines the document's internal structure. Compression within both .xps and .oxps packages relies on the DEFLATE algorithm, as specified in the ZIP File Format Version 6.2.0, to reduce file size while preserving XML readability and binary integrity. Text-based XML parts, such as page descriptions and metadata, are compressed efficiently, whereas binary resources like JPEG or PNG images are stored as separate entries with their native encoding to avoid unnecessary recompression, allowing direct extraction without loss of quality.[6] Conversion between .xps and .oxps is facilitated by Microsoft's XpsConverter tool, a command-line utility included in the Windows Driver Kit, which transforms documents while adjusting for standard compliance, such as updating namespaces and removing non-standard elements. The tool supports single-file or recursive folder conversions; for example, the commandXpsConverter /OpenXPS /InputFile=input.xps /OutputFile=output.oxps generates an ECMA-388-compliant .oxps file from a .xps input, with optional logging to track modifications. This process ensures backward compatibility for legacy .xps files in environments requiring OpenXPS adherence.[5]
Features
Graphics and Layout Capabilities
The Open XML Paper Specification (OpenXPS) employs Extensible Application Markup Language (XAML) to define vector graphics, enabling precise representation of paths, shapes, and text elements within documents. Vector graphics are constructed using the<Path> element, which specifies geometry through attributes such as Data for path commands (e.g., move, line, curve) and supports fills and strokes via brush properties. Paths can incorporate complex geometries defined by <PathGeometry> and segments like <ArcSegment>, <PolyBezierSegment>, <PolyLineSegment>, and <PolyQuadraticBezierSegment>, allowing for scalable, resolution-independent rendering of intricate designs. Shapes are similarly rendered as paths with applied brushes, while text rendering utilizes the <Glyphs> element to embed Unicode strings, glyph indices, or bidirectional text at specified origins (OriginX and OriginY), with support for OpenType fonts to ensure typographic fidelity across platforms.[7]
OpenXPS adopts a fixed-layout model for pagination, providing exact control over document structure and element placement to maintain consistent appearance regardless of viewing device or zoom level. Each page is encapsulated in a <FixedPage> element with fixed dimensions (e.g., width and height in 1/96-inch units), ensuring precise positioning through absolute coordinates and transformations like <RenderTransform>. Multi-page documents are organized via <FixedDocumentSequence> and <FixedDocument> containers, which reference individual <PageContent> resources, facilitating the assembly of paginated sequences without reflow. This zoom-independent rendering stems from its vector-based foundation, where elements scale smoothly without pixelation, preserving layout integrity during magnification or printing.[7]
Advanced visual effects in OpenXPS enhance layout flexibility through support for gradients, transparencies, clipping, and opacity masks. Linear gradients are implemented with <LinearGradientBrush>, specifying start and end points along with <GradientStop> collections for color transitions, while radial gradients use <RadialGradientBrush> with center, radius, and gradient stops for circular or elliptical fills. Transparencies are managed via the Opacity attribute (ranging from 0 to 1) on elements like paths or glyphs, allowing layered compositions. Clipping confines content to geometric boundaries using the <Clip> property, applicable to canvases, paths, and text elements, whereas opacity masks apply brush-based alpha modulation for per-pixel transparency effects, enabling sophisticated blending in layouts.[7]
OpenXPS includes optional integration of 3D graphics through X3D extensions, permitting the embedding of three-dimensional content as image sources. This is achieved via the <Brush3D> element, which references X3D files using Source3D attributes in the ST_UriImage3D type, with fallback mechanisms like <AlternateContent> for non-supporting renderers to ensure backward compatibility in mixed 2D/3D documents.[7]
For protected content, OpenXPS incorporates digital rights management features centered on integrity verification and limited resource obfuscation rather than full encryption. Digital signatures are applied to core document parts such as <FixedDocumentSequence>, <FixedPage>, and metadata via defined signing rules, supporting multiple signatures to authenticate origins and detect tampering, with types including compliant, valid, or broken states. Embedded fonts undergo obfuscation using a 128-bit GUID and XOR encryption on initial bytes to prevent unauthorized extraction, adhering to licensing restrictions like "print and preview" or "editable embedding" that mandate such protection while prohibiting subsetting or bitmap-only installs.[7]
Imaging and Color Management
OpenXPS supports embedding raster images in several standard formats to enable high-fidelity reproduction within documents. These include JPEG, which must conform to ITU-T T.81 and supports lossy compression primarily for RGB and grayscale data, though CMYK is permitted but not recommended; PNG, adhering to the PNG specification with lossless compression and support for ancillary chunks like tRNS for transparency; TIFF, based on TIFF 6.0 with extensions for lossless LZW compression, lossy JPEG, and bilevel CCITT encoding, accommodating RGB, CMYK, grayscale, palette, and alpha data; and JPEG XR, compliant with its specification, offering both lossless and lossy compression options for RGB, scRGB, CMYK, grayscale, n-channel, and named color spaces.[7] These formats allow raster images to be referenced via the ImageBrush element, with scaling and tiling capabilities to integrate seamlessly with vector graphics.[7] Color management in OpenXPS ensures consistent color reproduction across devices by incorporating ICC profiles conforming to ICC.1:2001-04, which can be embedded in raster images (e.g., via JPEG's APP2 marker or TIFF's ICC tag 34675) or referenced as package resources for document-wide application.[7] Supported color spaces encompass sRGB as the default for unprofiled RGB data, scRGB for extended dynamic range, standard RGB, CMYK with subtractive complementation, grayscale, and n-channel extensions for multi-tone images.[7] Spot colors are handled through named color syntax in brushes and gradients or via ICC named color profiles, enabling precise specification for printing applications outside standard RGB or CMYK gamuts.[7] If no ICC profile is present, defaults like sRGB apply based on pixel format, with blending and opacity computations occurring in the specified space, typically sRGB for mandatory support.[7] Alpha channel transparency is integral to raster image handling in OpenXPS, with support for pre-multiplied or non-pre-multiplied alpha in formats like TIFF (via the ExtraSamples tag) and JPEG XR (e.g., 32bppPBGRA pixel format), while PNG utilizes the tRNS chunk for simpler transparency.[7] Alpha values, ranging from 0.0 (fully transparent) to 1.0 (fully opaque), are clamped accordingly and combined multiplicatively with element opacity attributes in ImageBrush or other visual elements.[7] Blending modes rely on alpha compositing for transparency effects, with mandatory sRGB alpha blending and optional support for scRGB or CMYK; gradients and images use the BLEND() function with interpolation modes like SRgbLinearInterpolation, and spread methods (Pad, Reflect, Repeat) influence edge blending.[7] Temporary surfaces for transparent elements initialize to alpha 0.0, ensuring accurate per-pixel compositing during rendering.[7] Font embedding in OpenXPS utilizes OpenType (ISO/IEC 14496-22:2007) and TrueType formats, including CFF-based fonts and TrueType Collections, to guarantee consistent text rendering without system dependencies.[7] Fonts are embedded as obfuscated parts (with .odttf extension) using a 128-bit GUID and XOR on the first 32 bytes for security, referenced via the Glyphs element's FontUri attribute and linked through Restricted Font relationships.[7] Subsetting is permitted to include only used glyphs, reducing file size while maintaining validity as Open Font Format files, though prohibited for fonts with "no subsetting" licensing restrictions; this optimization, combined with resource reuse across pages, minimizes redundancy and supports efficient parsing.[7]Comparisons
With PDF
The Open XML Paper Specification (OpenXPS) employs an XML-based markup language, leveraging XAML for describing page layouts and content, which allows for human-readable and structured representation of fixed documents. In contrast, PDF relies on the Content Stream syntax (COS), a PostScript-derived object-based language that enables a more compact, binary-oriented description of document elements as defined in ISO 32000-1. This fundamental difference in syntax affects parsing and editing: OpenXPS's XML structure facilitates easier programmatic manipulation and validation against schemas, while PDF's COS supports complex object relationships for advanced rendering.[8][9] A key feature gap between OpenXPS and PDF lies in text handling and interactivity. OpenXPS maintains a strictly fixed layout with no support for reflowable text, ensuring precise positioning but limiting adaptability to different screen sizes or reading modes. PDF, however, incorporates optional tagging for reflowable content, allowing text to adapt while preserving structure for accessibility. Similarly, OpenXPS does not natively support interactive forms or fields, focusing instead on static presentation; PDF includes robust capabilities for fillable forms, dynamic content via JavaScript actions, and structured tagging for screen readers under standards like PDF/UA. These omissions in OpenXPS stem from its emphasis on print fidelity over editable or responsive documents.[2][10][11] Regarding file size and compression, OpenXPS packages its components using the ZIP-based Open Packaging Conventions (OPC), which provides inherent compression and modularity for resources like images and fonts, promoting portability across systems. PDF, by comparison, often achieves smaller file sizes through highly optimized stream compression techniques, including Flate and LZW algorithms tailored to content types, resulting in more efficient storage for complex documents without sacrificing fidelity. While OpenXPS's OPC enhances interoperability in packaged formats, PDF's stream-level optimizations make it preferable for bandwidth-sensitive applications.[8][9] In terms of interoperability, OpenXPS was engineered primarily for printing and spooling workflows, integrating seamlessly with Windows print paths to deliver device-independent output with high resolution independence. PDF, however, excels in broader versatility, supporting seamless web embedding, collaborative editing in tools like Adobe Acrobat, and universal viewing across platforms via widespread reader software. This design focus positions OpenXPS as a specialized alternative for print-centric tasks, while PDF's ecosystem enables diverse uses from digital publishing to archival sharing.[12][13]With Other Page Description Languages
Open XML Paper Specification (OpenXPS) differs fundamentally from PostScript, a procedural page description language developed by Adobe Systems that operates as a stack-based programming language to instruct printers on rendering operations through sequential commands.[14] In contrast, OpenXPS employs a declarative approach, using XML markup to specify the static structure, layout, and visual elements of a document without requiring an interpreter to execute programmatic steps, thereby simplifying rendering and reducing dependency on complex processing engines.[8] This declarative model enables direct, application-independent reproduction of content, avoiding the interpretive overhead inherent in PostScript's dynamic execution model.[15] Compared to Printer Command Language (PCL), a command-oriented protocol developed by Hewlett-Packard primarily for controlling printer hardware and basic page formatting, OpenXPS offers more advanced graphics capabilities.[16] PCL relies on printer-specific escape sequences for tasks like text placement and simple raster graphics, which limit its support for sophisticated features such as vector paths, transparency, and gradients.[16] OpenXPS, however, natively incorporates XML elements like<Path> for scalable vector graphics, <Opacity> attributes for transparency blending (ranging from 0.0 to 1.0), and <LinearGradientBrush> for smooth color transitions, providing richer, device-independent visual fidelity that surpasses PCL's hardware-dependent constraints.[8]
A key advantage of OpenXPS lies in its openness, leveraging standardized web technologies such as XML for content description and ZIP-based Open Packaging Conventions for file structure, which promote interoperability and extensibility without proprietary dependencies common in older PDLs like PostScript and early PCL versions.[8] This design facilitates compact representation, unambiguous rendering across platforms, and features like digital signatures and resource sharing, contrasting with the more closed or device-tied elements in legacy formats.[15] As a result, OpenXPS enhances portability, scalability, and accessibility, including support for screen readers via structured markup, while maintaining high color fidelity through ICC profiles.[8]
In terms of use cases, OpenXPS is optimized for digital distribution, such as e-books, web archiving, and cross-platform sharing, where its fixed-layout format ensures consistent viewing and interactivity like hyperlinks without alteration.[8] PostScript and PCL, by comparison, are geared toward direct printing workflows, with PostScript excelling in professional graphics production via its programmable precision and PCL suiting efficient, high-volume office printing through streamlined commands.[14][16]
