Was ist eine XPS Datei? | Wissensdatenbank
Einführung
Aus dem Artikel über Seitenbeschreibungssprachen haben Sie herausgefunden, dass XPS zu den statischen PDLs gehört. Der Artikel hier wird Ihnen weitere Informationen über das XPS-Format und XPS-Dateien, ihre Besonderheiten, Struktur und Verwendung geben.
Was ist XPS-Datei?
XPS oder abgekürzt XML Paper Specification-Datei stellt ein ZIP-komprimiertes Paket von Ressourcen (Bilder, Schriftarten usw.) und XML-basierten Dateien dar, die auf diese Ressourcen verweisen. XML-basierte Dateien speichern den Inhalt von Dokumenten und Seiten sowie Beziehungen zwischen verschiedenen Teilen des Pakets. Ein wichtiges Merkmal des XPS-Formats ist, dass alle erforderlichen Dokumentressourcen im selben Paket wie die Dokumente selbst gespeichert werden.
Typischer Aufbau einer Datei im XPS-Format
Wenn wir eine XPS-Datei mit einem ZIP-Dienstprogramm öffnen, können wir die folgende Struktur sehen:
„Fixed document sequense.fdseq“ ist eine Wurzel des Paketbaums. Es enthält eine Liste der Dokumente im Paket.
<FixedDocumentSequence xmlns="http://schemas.microsoft.com/xps/2005/06">
<DocumentReference Source="Documents/1/FixedDocument.fdoc" />
</FixedDocumentSequence>
Im obigen Beispiel enthält die feste Dokumentsequenz nur ein Dokument, sie kann jedoch mehrere Dokumente enthalten.
„[Content_Type].xml“ enthält die Zuordnung zwischen Erweiterungen von Paketteilen und Inhaltstypen, die in entsprechenden XML-Schemas beschrieben werden:
<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="fdseq" ContentType="application/vnd.ms-package.xps-fixeddocumentsequence+xml" />
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
<Default Extension="fdoc" ContentType="application/vnd.ms-package.xps-fixeddocument+xml" />
<Default Extension="fpage" ContentType="application/vnd.ms-package.xps-fixedpage+xml" />
<Default Extension="ODTTF" ContentType="application/vnd.ms-package.obfuscated-opentype" />
<Default Extension="png" ContentType="image/png" />
</Types>
„Dokument“-Teile befinden sich im Ordner „Dokumente“ und zusätzlich in einem eigenen Ordner, dessen Name ein Index des Dokuments im Teil „Feste Dokumentreihenfolge“ ist.
Der Ordner des Dokuments enthält auch „fpage“- oder „fixed page“-Teile und einen Ordner mit Beziehungen der Seiten.
„FixedDocument.fdoc“ enthält Verweise auf „feste Seiten“-Teile und Listen von „Linkzielen“.
<FixedDocument xmlns="http://schemas.microsoft.com/xps/2005/06">
<PageContent Source="Pages/1.fpage">
<PageContent.LinkTargets>
<LinkTarget Name="Page1" />
<LinkTarget Name="Conditions" />
<LinkTarget Name="Rfd_Conditions" />
<LinkTarget Name="Label2" />
......................................
<PageContent.LinkTargets>
</PageContent>
<PageContent Source="Pages/2.fpage">
<PageContent.LinkTargets>
<LinkTarget Name="Page2" />
<LinkTarget Name="Rectangle" />
<LinkTarget Name="peQ5" />
......................................
<PageContent.LinkTargets>
</PageContent>
<PageContent Source="Pages/3.fpage">
<PageContent.LinkTargets>
<LinkTarget Name="Page3" />
<LinkTarget Name="Followup" />
<LinkTarget Name="Rfd_Followup" />
<LinkTarget Name="Label41" />
......................................
</PageContent.LinkTargets>
</PageContent>
</FixedDocument>
Das LinkTarget-Element definiert das benannte Seitenbeschreibungselement, das per Hyperlink angesprochen werden kann.
„Feste Seite“ enthält eine statische Seitenbeschreibung, bei der jedes Grafikelement durch ein XML-Element mit allen erforderlichen Eigenschaften dargestellt wird. Unten ist der reduzierte Inhalt der festen Seite mit einem Index 1.
<FixedPage xmlns="http://schemas.microsoft.com/xps/2005/06" xmlns:x="http://schemas.microsoft.com/xps/2005/06/resourcedictionary-key" xml:lang="en-us" Width="784" Height="1024">
<FixedPage.Resources>
<ResourceDictionary>
<ImageBrush x:Key="b0" ViewportUnits="Absolute" TileMode="None" ViewboxUnits="Absolute" Viewbox="0,0,150,84" Viewport="0,0,150,84" ImageSource="/Resources/5acf843b-c331-4268-bedd-1f38575d2cba.png" />
<ImageBrush x:Key="b1" ViewportUnits="Absolute" TileMode="None" ViewboxUnits="Absolute" Viewbox="0,0,308,222" Viewport="0,0,306.612612612613,221" ImageSource="/Resources/56123998-a878-4552-a78f-652734403449.png" />
<LinearGradientBrush x:Key="b2" StartPoint="1,1" EndPoint="1,29" ColorInterpolationMode="SRgbLinearInterpolation" MappingMode="Absolute" SpreadMethod="Pad">
<LinearGradientBrush.GradientStops>
<GradientStop Color="sc#0.980392158, 1, 1, 1" Offset="0" />
<GradientStop Color="sc#0.521568656, 1, 1, 1" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<ImageBrush x:Key="b3" ViewportUnits="Absolute" TileMode="None" ViewboxUnits="Absolute" Viewbox="-1.77635683940025E-15,0,30.004187214593,28.0039080669535" Viewport="0,0,34,31.7333333333333" ImageSource="/Resources/1fcae301-7b09-41d4-b09c-adb92c26d9df.png" />
<ImageBrush x:Key="b4" ViewportUnits="Absolute" TileMode="None" ViewboxUnits="Absolute" Viewbox="0,0,33.92,42.24" Viewport="0,0,33.92,42.24" ImageSource="/Resources/9812220b-fe0b-4df4-946a-391c0ef76f78.png" />
</ResourceDictionary>
</FixedPage.Resources>
<Canvas RenderTransform="0.96150234741784,0,0,0.96150234741784,0,0">
<Canvas Name="Page1" RenderTransform="1.0400390625,0,0,1.0400390625,0,0">
<Path Fill="#FFFFFFFF" Data="M0,0L784,0 784,1024 0,1024Z" />
<Canvas Clip="M0,0L784,0 784,1024 0,1024Z">
<Canvas Name="Rfd_Conditions" RenderTransform="1,0,0,1,51,712" />
<Glyphs Name="Label2" OriginX="517.83" OriginY="22.0533333333333" FontRenderingEmSize="10" FontUri="/Resources/6211f37e-c1a8-4b0a-82b1-9eb64114c039.ODTTF" UnicodeString="Patient Name:" Fill="#FF404040" />
<Glyphs Name="Label3" OriginX="556.08" OriginY="42.0533333333333" FontRenderingEmSize="10" FontUri="/Resources/6211f37e-c1a8-4b0a-82b1-9eb64114c039.ODTTF" UnicodeString="Acct#:" Fill="#FF404040" />
<Path Name="Line" Stroke="#FF00529B" StrokeThickness="1" StrokeMiterLimit="10" Fill="#00FFFFFF" RenderTransform="1,0,0,1,41,206" Data="M0,0.5L680,0.5" />
<Path Name="Image" Fill="{StaticResource b0}" RenderTransform="1,0,0,1,15,7" Data="M0,0L150,0 150,84 0,84Z" />
<Canvas Name="HxConditionsDissatisfiedPatients" RenderTransform="1,0,0,1,53,714">
<Path Stroke="#FF000000" StrokeThickness="1" StrokeMiterLimit="10" RenderTransform="0.8,0,0,0.8,2.4,2.4" Data="M0.5,0.5L23.5,0.5 23.5,23.5 0.5,23.5Z" />
<Glyphs OriginX="33" OriginY="16.16" FontRenderingEmSize="12" FontUri="/Resources/2735f4ff-8c83-44e1-89ed-520ec4c4be53.ODTTF" UnicodeString="Dissatisfied patients" Fill="#FF404040" />
</Canvas>
<Path Name="Rectangle3" Stroke="#FF808080" StrokeThickness="1" StrokeMiterLimit="10" Fill="#00FFFFFF" RenderTransform="1,0,0,1,74,951" Data="M0.5,0.5L329.5,0.5 329.5,44.5 0.5,44.5Z" />
<Canvas Name="Conditions" RenderTransform="1,0,0,1,51,712" />
<Path Fill="#FF0066CC" Data="M0,12.77L330.4,12.77 330.4,13.47 0,13.47Z" />
</Canvas>
<PathGeometry x:Key="all">
<PathFigure StartPoint="20,70" IsClosed="true">
<PolyLineSegment Points="250,70 250,300 20,300" />
</PathFigure>
<PathFigure StartPoint="135,70">
<ArcSegment Size="115,115" IsLargeArc="true" RotationAngle="0" SweepDirection="Counterclockwise" Point="135,300" />
<ArcSegment Size="115,115" IsLargeArc="true" RotationAngle="0" SweepDirection="Counterclockwise" Point="135,70" />
</PathFigure>
<PathFigure StartPoint="135,70">
<PolyQuadraticBezierSegment Points="270,185 135,300" />
<PolyQuadraticBezierSegment Points="0,185 135,70" />
</PathFigure>
<PathFigure StartPoint="250,185">
<PolyBezierSegment Points="173.34,85 96.67,285 20,185" />
<PolyBezierSegment Points="96.67,85 173.34,285 250,185" />
</PathFigure>
</PathGeometry>
</Canvas>
</Canvas>
</Canvas>
</Canvas>
<Path FixedPage.NavigateUri="http://www.bottomline.com" Fill="#00000000" Data="F1M170,77L500.4,77 500.4,91.58 170,91.58Z" />
</FixedPage>
Wie wir sehen können, gibt es mehrere Grafikelemente: „Path“, „PathGeometry“ und „Glyphs“ sowie Elemente, die andere Grafikelemente mit derselben Transformation und demselben Ausschnitt gruppieren, „Canvas“. „Pfad“ und „PathGeometrie“ können Vektorgrafiken enthalten, die mit einer Volltonfarbe oder einem komplexen Pinsel, beispielsweise einem Verlaufs- oder Bildpinsel, gestrichelt oder/und gefüllt sind. Der Verlaufspinsel kann linear oder radial sein und der Bildpinsel enthält immer Verweise auf ein Bild im Ordner „Ressourcen“. Für ein Rasterbild gibt es jetzt ein eigenes Grafikelement. Zu diesem Zweck wird das mit „ImageBrush“ gefüllte „Path“-Element verwendet.
Eine weitere bemerkenswerte Sache, die wir in diesem Seitenbeschreibungsfragment finden können, ist, dass Text nur im Element „Glyphs“ als Attribut „unicodeString“ enthalten ist und nicht als untergeordnetes Element dieses Elements wie in XML oder HTML. Inhalt ist also nicht von Markup getrennt. Aus diesem Grund kann XPS nicht als Markup Language bezeichnet werden.
Die Syntax von XPS-Dateien sowie XML ist in der Augmented Backus–Naur-Form (ABNF).
Von der Seite verwendete Ressourcen befinden sich in einem separaten Element „FixedPage.Resources“.
Die Seitenressourcen, die auf Remote-Dateien (Remote für diese Seite, nicht für diese XPS-Datei) verweisen, beispielsweise Schriftarten oder Bilder, haben auch entsprechende Hinweise in der Beziehungsdatei „*.fpage.rels“.
Ressourcen werden in Ordnern mit dem Namen „Ressourcen“ gespeichert. Solche Ordner können auf verschiedenen Ebenen der Paketstruktur liegen. In der Regel sind dort Schriftarten und Bilder enthalten. Alle Schriftarten haben entweder die Erweiterung *.TTF für TrueType-Schriftarten oder die Erweiterung *.ODTTF für verschleierte TrueType-Schriftarten. Die Verschleierung von Schriftarten dient dazu, die Extraktion von Schriftarten und deren Verwendung an anderen Orten ohne Genehmigung zu unterdrücken. Neben TrueType-Schriftarten unterstützt XPS nur TrueType-Schriftartensammlungen mit der Erweiterung *.ODTTC. Es werden keine anderen Schriftarten unterstützt. Bilder können im PNG-, JPEG-, TIFF- oder WDP-Format (Windows Media Photo Images) vorliegen. Manchmal wird neben anderen Ressourcen auch die .dic-Datei gefunden. Es handelt sich um einen Wörterbuchteil. Es enthält für Dokumente oder Seiten gemeinsame sogenannte „Remote-Ressourcen“, für die keine separaten Dateien erforderlich sind. Remote in dem Sinne, dass sie nicht in einem „Dokument“-Teil, sondern in einem externen Ordner gespeichert werden. Zu diesen Ressourcen können Brush-, PathGeometry-, MatrixTransform-Elemente usw. gehören. ICC-Farben, die im Dokument verwendet werden, werden auch als „.icc“-Datei im Ordner „Resources“ abgelegt.
Optionale Teile einer XPS-Datei.
Die XPS-Datei kann zusätzliche, nicht obligatorische Teile zum Navigieren, Drucken und Signieren enthalten.
XPS-Dokumentstruktur.
Die Navigation über Dokumentteile wird durch den Teil „DocumentSructure“ und seine untergeordneten Elemente „DocumentOutline“, „Story“, „StoryFragment“ realisiert. „Absatz“, „Tabelle“ und „NamedElement“. Die Dokumentstruktur wird zusammen mit den Seiten im Dokumentordner gespeichert.
Die Datei „DocStructure.struct“ enthält DocumentOutline mit Verweisen auf StoryFragments.
<DocumentStructure xmlns="http://schemas.microsoft.com/xps/2005/06/documentstructure">
<DocumentStructure.Outline>
<DocumentOutline xml:lang="en-US">
<OutlineEntry OutlineLevel="1" Description="Print Schema Specification" OutlineTarget="../FixedDoc.fdoc#PG_1_LNK_1069"/>
<OutlineEntry OutlineLevel="1" Description="Contents" OutlineTarget="../FixedDoc.fdoc#PG_8_LNK_1070"/>
<OutlineEntry OutlineLevel="2" Description="About This Specification" OutlineTarget="../FixedDoc.fdoc#PG_24_LNK_1074"/>
<OutlineEntry OutlineLevel="2" Description="How This Specification Is Organized" OutlineTarget="../FixedDoc.fdoc#PG_24_LNK_1075"/>
<OutlineEntry OutlineLevel="3" Description="2.1.4.1 <psf:Property>" OutlineTarget="../FixedDoc.fdoc#PG_49_LNK_1124"/>
<OutlineEntry OutlineLevel="4" Description="Example 2.1-6. Property syntax example" OutlineTarget="../FixedDoc.fdoc#PG_50_LNK_1125"/>
.....................................................................................................................................
</DocumentOutline>
</DocumentStructure.Outline>
<Story StoryName="MainStory">
<StoryFragmentReference Page="1"/>
<StoryFragmentReference Page="2"/>
<StoryFragmentReference Page="3"/>
.....................................
</Story>
<Story StoryName="s1">
<StoryFragmentReference Page="1"/>
</Story>
<Story StoryName="s2">
<StoryFragmentReference Page="2"/>
</Story>
<Story StoryName="s3">
<StoryFragmentReference Page="3"/>
</Story>
......................................
</DocumentStructure>
Im Ordner „Fragmente“ werden Story-Fragmente gespeichert.
Jedes „Fragment“ enthält „Paragraphs“ mit den Elementen „NamedElements“ und „Tables“.
<StoryFragments xmlns="http://schemas.microsoft.com/xps/2005/06/documentstructure">
<StoryFragment FragmentType="Content" StoryName="MainStory">
<ParagraphStructure>
<NamedElement NameReference="a5"/>
<NamedElement NameReference="a6"/>
<NamedElement NameReference="a7"/>
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="a8"/>
</ParagraphStructure>
<TableStructure>
<TableRowGroupStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="a28"/>
<NamedElement NameReference="a29"/>
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="a30"/>
<NamedElement NameReference="a31"/>
<NamedElement NameReference="a32"/>
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="a33"/>
<NamedElement NameReference="a34"/>
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="a35"/>
<NamedElement NameReference="a36"/>
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
</TableRowGroupStructure>
</TableStructure>
<ParagraphStructure>
<NamedElement NameReference="a9"/>
<NamedElement NameReference="a10"/>
</ParagraphStructure>
...................................................................
</StoryFragment>
</StoryFragments>
Drucken Sie Tickets in XPS-Dateien.
Druckfunktionen werden über „PrintTicket“-Teile implementiert. Es enthält Druckeinstellungen, die einer Dokumentsequenz, einem Dokument oder einer Seite zugeordnet werden können. „PrintTicket“-Teile werden in Dateien mit der Maske „*_PT.xml“ gespeichert, wobei „PT“ für PrintTicket steht. PrintTicket-Dateien befinden sich im Ordner „Metadata“.
Beispiel für PrintTicket.
<?xml version="1.0" encoding="UTF-8"?>
<psf:PrintTicket xmlns:psf="http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
version="1"
xmlns:ns0000="http://schemas.microsoft.com/windows/2006/06/printing/printschemakeywords/microsoftxpsdocumentwriter"
xmlns:psk="http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords">
<psf:ParameterInit name="ns0000:PageDevmodeSnapshot">
<psf:Value xsi:type="xsd:string">
TQBpAGMAcgBvAHMAbwBmAHQAIABYAFAAUwAgAEQAb........=
</psf:Value>
</psf:ParameterInit>
<psf:ParameterInit name="psk:JobCopiesAllDocuments">
<psf:Value xsi:type="xsd:integer">1</psf:Value>
</psf:ParameterInit>
<psf:Feature name="psk:PageMediaSize">
<psf:Option name="psk:ISOA4">
<psf:ScoredProperty name="psk:MediaSizeWidth">
<psf:Value xsi:type="xsd:integer">210000</psf:Value>
</psf:ScoredProperty>
<psf:ScoredProperty name="psk:MediaSizeHeight">
<psf:Value xsi:type="xsd:integer">297000</psf:Value>
</psf:ScoredProperty>
</psf:Option>
</psf:Feature>
<psf:Feature name="psk:JobInputBin">
<psf:Option name="psk:AutoSelect"/>
</psf:Feature>
<psf:Feature name="ns0000:JobInterleaving">
<psf:Option name="ns0000:OFF"/>
</psf:Feature>
<psf:Feature name="ns0000:JobImageType">
<psf:Option name="ns0000:JPEGMed"/>
</psf:Feature>
<psf:Feature name="psk:PageOrientation">
<psf:Option name="psk:Portrait"/>
</psf:Feature>
<psf:Feature name="psk:DocumentCollate">
<psf:Option name="psk:Uncollated"/>
</psf:Feature>
<psf:Feature name="psk:PageResolution">
<psf:Option name="ns0000:Option1">
<psf:ScoredProperty name="psk:ResolutionX">
<psf:Value xsi:type="xsd:integer">600</psf:Value>
</psf:ScoredProperty>
<psf:ScoredProperty name="psk:ResolutionY">
<psf:Value xsi:type="xsd:integer">600</psf:Value>
</psf:ScoredProperty>
</psf:Option>
</psf:Feature>
<psf:Feature name="psk:PageOutputColor">
<psf:Option name="psk:Color">
<psf:ScoredProperty name="psk:DeviceBitsPerPixel">
<psf:Value xsi:type="xsd:integer">24</psf:Value>
</psf:ScoredProperty>
<psf:ScoredProperty name="psk:DriverBitsPerPixel">
<psf:Value xsi:type="xsd:integer">24</psf:Value>
</psf:ScoredProperty>
</psf:Option>
</psf:Feature>
</psf:PrintTicket>
Miniaturansichten.
In „Metadaten“-Ordnern werden ggf. auch Miniaturansichten von Bildern gespeichert.
Signaturdefinitionen.
Der Teil „SignatureDefinitions“ ermöglicht das Signieren, Anfordern und Validieren der Signierung beliebiger XPS-Dokumentteile gemäß der im Teil „SignatureDefinitions“ definierten Signaturrichtlinie.
Unterstützung für Schriftarten, Farben und Bilder in XPS-Dokumenten
Font formats - Compact Fonts (CFF)- TrueType | Color space types - sRGB- scRGB- CMYK- N-Channel- ICC version 2 | Image formats - JPEG- PNG- TIFF- Windows Media Photo Image (WDP) |
XPS unterstützt nur das OpenType-Schriftformat, das durch das Microsoft TrueType-Format erweitert wird und die Formate TrueType Font (TTF) und Compact Font (CFF) kombiniert.
Wie kann man XPS-dateien öffnen?
XPS-Dateien können mit dem XPS Viewer von Microsoft geöffnet werden. Es ist eine Standard-Windows-Komponente, beginnend mit Windows Vista. Eine alternative Möglichkeit besteht darin, die XPS-Datei mit der Webanwendung Aspose.Page XPS Viewer anzuzeigen.
Kann ich eine XPS-Datei in ein PDF konvertieren?
Der schnellste Weg, XPS-Dateien in PDF zu konvertieren, ist die Verwendung von Aspose.Page Conversion Webanwendung. Der Aspose XPS-Konverter unterstützt XPS-zu-PDF-, DOC-, DOCX-, HTML-, TEX-, SVG-, PNG-, JPG-, TIFF- und BMP-Konvertierungen. Wenn Sie Entwickler sind und unsere Bibliothek für solche Konvertierungen verwenden möchten, lesen Sie den Artikel PDLs-Konverter, um die mit Codeausschnitten illustrierten Beispiele für die Durchführung der Konvertierung zu finden.
Kann ich eine XPS-Datei in Word öffnen?
Dies ist nicht direkt möglich, aber Sie können eine XPS-Datei über die Webanwendung Aspose.Page Conversion in ein Word-Dokument konvertieren und sie dann im Microsoft Word-Texteditor öffnen.
Können XPS-Dateien in Excel konvertiert werden?
Ja, Sie können XPS online in der Webanwendung Aspose.Page Conversion in Excel konvertieren. XPS-Dokument wird als Tabelle erkannt. Bilder werden nicht in die resultierende XLSX-Datei übertragen.
Wie öffne ich eine XPS-Datei in Photoshop?
Dies ist nicht direkt möglich, aber Sie können entweder Rasterbilddateien, die aus der Konvertierung von XPS in Bild (JPG, PNG, TIFF, BMP) resultieren, in der Web-App Aspose.Page Conversion öffnen oder Sie können die XPS-Datei einfach mit ZIP öffnen Suchen Sie mit dem zuvor beschriebenen Dienstprogramm unter den Ressourcen in den Ordnern „Ressourcen“ das erforderliche Bild, extrahieren Sie es in Ihren Ordner und öffnen Sie es schließlich in Adobe Photoshop.
Ist XPS besser als PDF?
Es hängt von Ihren Bedürfnissen ab. Siehe einen Artikel Vergleich von Seitenbeschreibungssprachen. Ich hoffe, es hilft Ihnen, die richtige Entscheidung zu treffen.
Wie öffne ich eine XPS-Datei auf meinem Telefon?
Sie können eine XPS-Datei in jedem Browser mit der Webanwendung Aspose.Page XPS Viewer öffnen.