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.
Approfondimenti
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Inserire le news di Punto Informatico nel proprio sito


