O que o XPS é um arquivo? | Base de conhecimento

Introdução

No artigo sobre Page Descrição Languages, você descobriu que o XPS é um dos PDLs estáticos. O artigo aqui fornecerá mais informações sobre o formato XPS e os arquivos XPS, suas peculiaridades, estrutura e uso.

O que é o formato XPS?

XPS ou arquivo de especificação de papel XML abreviado representa um pacote de recursos com compacto com ZIP (imagens, fontes etc.) e arquivos baseados em XML que fazem referência a esses recursos. Os arquivos baseados em XML armazenam o conteúdo de documentos e páginas e relacionamentos entre várias partes do pacote. É uma característica importante do formato XPS que todos os recursos necessários dos documentos são armazenados no mesmo pacote que os próprios documentos.

Estrutura típica de um arquivo de formato XPS

Se abrirmos algum arquivo XPS com algum utilitário zip, podemos visualizar a seguinte estrutura:

Pacote XPS

“Fixed Document Sequense.fdseq” é uma raiz da árvore do pacote. Ele contém uma lista de documentos no pacote.

<FixedDocumentSequence xmlns="http://schemas.microsoft.com/xps/2005/06">
    <DocumentReference Source="Documents/1/FixedDocument.fdoc" />
</FixedDocumentSequence>

No exemplo acima, a sequência de documentos fixa contém apenas um documento, mas pode conter mais documentos.

“[Content_type] .xml” contém mapeamento entre extensões de peças de pacotes e tipos de conteúdo descritos nos esquemas XML correspondentes:

<?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>

As peças de “documento” estão localizadas na pasta “documentos” e também em sua própria pasta cujo nome é um índice do documento na parte “Sequência de documentos fixa”.

A pasta do documento também contém peças “FPAGE” ou “Página fixa” e uma pasta com relacionamentos das páginas.

“FIRLDDOCUMENT.FDOC” contém referências em peças e listas de “Página fixa” de “metas de link”.

<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>

O elemento LinkTarget define o elemento de descrição da página nomeada que pode ser abordada pelo HyperLink.

“Página fixa” contém uma página estática Descrição, onde qualquer elemento gráfico é representado por um elemento XML com todas as propriedades necessárias. Abaixo está o conteúdo reduzido da página fixa com um índice 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>

Como podemos ver, existem vários elementos gráficos: “caminho”, “pathgeometria” e “glifos” e elementos que agrupam outros elementos gráficos com a mesma transformação e recorte, “tela”. “Path” e “PathGeometria” podem conter os gráficos vetoriais formaram ou preenchidos com um pincel de cor sólido ou complexo, por exemplo, gradiente ou pincel de imagem. O pincel de gradiente pode ser linear ou radial e o pincel de imagem sempre contém referências em uma imagem na pasta “Recursos”. Agora existe um elemento gráfico separado para uma imagem raster. O elemento “Path” preenchido com “ImageBrush” é usado para esse fim.

Outro aspecto notável que podemos encontrar neste fragmento de descrição da página é que o texto está contido apenas no elemento “Glyphs” como atributo “unicodeString”, em vez de como filho deste elemento, como em XML ou HTML. Portanto, o conteúdo não está separado da marcação. É por isso que a XPS não pode ser chamada de Linguagem de Marcação.

A sintaxe dos ficheiros XPS, bem como do XML, está no formato Augmented Backus-Naur (ABNF).

Os recursos utilizados pela página estão localizados em um elemento separado “FixPage.Resources”.

Esses recursos da página que têm referência no controle remoto (remoto para esta página não para este arquivo XPS), por exemplo, fontes ou imagens, também têm notas correspondentes no arquivo de relacionamentos “*.fpage.rels”.

Os recursos são armazenados em pastas com o nome “Recursos”. Essas pastas podem estar localizadas em diferentes níveis de estrutura do pacote. Como regra, fontes e imagens estão contidas lá. Todas as fontes têm uma extensão *.ttf para fontes trueType ou *.odttf Extensão para fontes de trueType ofuscadas. A ofuscação de fontes é feita para suprimir a extração de fontes e usá -la em outros lugares sem permissão. Além das fontes TrueType, o XPS suporta apenas as coleções de fontes TrueType com a extensão *.ODTTC. Nenhum outro tipo de fonte é suportado. As imagens podem estar no formato PNG, JPEG, TIFF ou WDP (Windows Media Photo Images). Às vezes, entre outros recursos . O arquivo dico é atendido. É uma parte do dicionário. Ele contém comuns para documentos ou páginas os chamados “recursos remotos” que não exigem arquivos separados. Remoto, no sentido de que eles são armazenados não em uma peça de “documento”, mas em uma pasta externa. Entre esses recursos, pode ser o pincel, o pathgeometria, os elementos MatrixTransform etc. As cores da ICC que são usadas no documento também são colocadas como arquivo “.icc” na pasta “Recursos”.

Partes opcionais de um arquivo XPS.

O arquivo XPS pode conter peças adicionais, não obrigatórias, para navegar, imprimir e assinar.

Estrutura do documento XPS.

A navegação sobre as partes do documento é realizada pela parte “DocumentRucture” e seus elementos filhos “DocumentOutline”, “Story”, “StoryFragment”, “Parágrafo”, “tabela” e “nomeado”. A estrutura do documento é armazenada na pasta de documentos junto com as páginas.

XPS Parte do documento

XPS DocumentStructure

O arquivo “docstructure.struct” contém documentário com referências sobre 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 &lt;psf:Property&gt;" 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>

Nos fragmentos da história da pasta “fragmentos” são armazenados.

XPS Documentstructure Fragments

Cada “fragmento” contém “parágrafos” com “elementos” Nomelements “e” 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>

Imprimir ingressos em arquivos XPS.

Os recursos de impressão são implementados através de peças “PrintTicket”. Ele contém configurações de impressão que podem ser anexadas a uma sequência de documentos, um documento ou página. As peças “PrintTicket” são armazenadas em arquivos com máscara “*_pt.xml” onde “pt” significa printket. Os arquivos PrintTicket estão localizados na pasta “metadados”.

XPS PrintTickets

Exemplo de 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>

Miniaturas.

Nas pastas “metadados” também as imagens de miniaturas são armazenadas, se forem.

Miniaturas XPS

Signaturedefinitions.

A peça “SignaturedeFinitions” permite assinar, solicitar e validar a assinatura de peças arbitrárias de documentos XPS de acordo com a assinatura da política definida na parte “SignatureDefinitions”.

XPS Signaturedefinitions

Suporte para fontes, cores e imagens em documentos XPS


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)

O XPS suporta apenas o formato de fonte Openype, que é estendido pelo formato Microsoft TrueType que combina os formatos TrueType Font (TTF) e Fonte Compact (CFF).

Como abrir o arquivo XPS?

O arquivo XPS pode ser aberto com o Viewer XPS da Microsoft. É um componente Windows padrão que começa com o Windows Vista. Uma maneira alternativa é visualizar o arquivo XPS com o aplicativo da web Aspose.Page XPS.

Posso converter um arquivo XPS em um PDF?

A maneira mais rápida de converter arquivos XPS em PDF é usar Aspose.Page Conversão Aplicativo da Web. A Aspose XPS Converter suporta XPS para PDF, DOC, DOCX, HTML, TEX, SVG, PNG, JPG, TIFF, BMP Conversões. Se você é um desenvolvedor e deseja usar nossa biblioteca para essas conversões, aprenda PDLS Converters Article para encontrar os ilustrados com trechos de código exemplos de como fazer a conversão.

Posso abrir um arquivo XPS no Word?

Não é possível diretamente, mas você pode converter um arquivo XPS em documento do Word via Aspose.Page Conversão Aplicativo da Web e, em seguida, abri -lo editor de texto do Microsoft Word.

Os arquivos XPS podem ser convertidos para Excel?

Sim, você pode converter XPS para se destacar on -line em Aspose.Page Conversão Aplicativo da Web. O documento XPS será reconhecido como uma tabela. As imagens não são transferidas para o arquivo XLSX resultante.

Como faço para abrir um arquivo XPS no Photoshop?

Não é possível diretamente, mas você pode abrir arquivos de imagem raster resultantes de XPS para imagem (JPG, PNG, TIFF, BMP) em Aspose.Page Conversão Web aplicativo ou você pode simplesmente abrir o arquivo XPS com o seu posto de postagem, como foi descrito anteriormente, encontre -se entre os recursos em “Recursos”.

O XPS é melhor que o PDF?

Depende de suas necessidades. Consulte um artigo Comparação da página Descrição Languages. Espero que ajude você a tomar a decisão certa.

Como faço para abrir um arquivo XPS no meu telefone?

Você pode onPen um arquivo XPS em qualquer navegador com o aplicativo da web Aspose.Page XPS XPS.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.