Con il .NET Framework 3.0 Microsoft ha incluso nuovi framework quali Windows Communication Foundation, Windows Presentation Foundation e Windows Workflow Foundation, ma ha anche aggiunto il supporto alla lettura e la manipolazionei di documenti XPS (XML Paper Specification). Quest'ultimi sono pacchetti di file XML e risorse che rappresentano documenti WYSWYG pronti per essere consultati e stampati.
Di fatto questi pacchetti non sono altro che file ZIP, detti Package i quali contengono file eventualmente compressi, detti PackagePart, strutturati secondo il container ZIP. In unione ad essi è presente un file [Content_Types].xml contenente informazioni aggiuntive come il content-type di ogni file e le relazioni interne o esterne al file stesso.
Questa tecnologia è aperta e può quindi essere sfruttata anche per altri scopi, per esempio per creare semplicemente file ZIP, attraverso la classe ZipPackage del namespace System.IO.Packaging.
// Creo il file ZIP using (Package packege = ZipPackage.Open("test.zip", FileMode.Create)) { // Inserisco il primo file PackagePart part = packege.CreatePart(new Uri("/file1.txt", UriKind.Relative), MediaTypeNames.Text.Plain, CompressionOption.Normal); // Apro lo stream e inserisco del testo using (Stream partStream = part.GetStream()) { using (StreamWriter writer = new StreamWriter(partStream)) { writer.Write("Test"); } } // Creo il secondo file in una sotto directory part = packege.CreatePart(new Uri("/subDir/file2.jpg", UriKind.Relative), MediaTypeNames.Image.Jpeg, CompressionOption.Normal); using (Stream partStream = part.GetStream()) { // Copio il file nello stream using (Stream fileStream = File.OpenRead(@"c:\immagine.jpg")) { fileStream.WriteToStream(partStream, 4096); } } }
Il metodo WriteToStream sullo stream serve per travasare il file ed è descritto nello script #93.
Per approfondimenti su Open Packaging Conventions:
http://www.microsoft.com/whdc/xps/downloads.mspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.