Package Classe

Définition

Représente un conteneur qui peut stocker plusieurs objets de données.Represents a container that can store multiple data objects.

public ref class Package abstract : IDisposable
public abstract class Package : IDisposable
type Package = class
    interface IDisposable
Public MustInherit Class Package
Implements IDisposable
Héritage
Package
Dérivé
Implémente

Exemples

L’exemple suivant montre les étapes de base pour la création d’un Package.The following example shows the basic steps for creating a Package. Dans cet exemple, un package est créé pour contenir un document avec une image graphique qui s’affiche dans le cadre du document.In this example, a package is created to contain a document together with a graphic image that is displayed as part of the document. (Cela est similaire au cas où un fichier HTML a une balise <IMG > qui référence un fichier image externe.) Deux éléments PackageRelationship sont également inclus dans le package.(This is similar to the case in which an HTML file has an <IMG> tag that references an external image file.) Two PackageRelationship elements are also included in the package. La première, une relation au niveau du package, définit la partie document en tant qu’élément racine du package.The first, a "package-level" relationship, defines the document part as the package's root element. Une deuxième relation, « au niveau du composant », définit l’association entre la partie de document (la « source » de la relation au niveau de la partie) et son utilisation de la partie de l’image (« cible » de la relation au niveau de la partie).A second, "part-level" relationship defines the association between the document part (the "source" of the part-level relationship) and its use of the image part (the "target" of the part-level relationship). Pour obtenir l’exemple complet, consultez écriture d’un exemple de package.For the complete sample, see Writing a Package Sample.

//  -------------------------- CreatePackage --------------------------
/// <summary>
///   Creates a package zip file containing specified
///   content and resource files.</summary>
private static void CreatePackage()
{
    // Convert system path and file names to Part URIs. In this example
    // Uri partUriDocument /* /Content/Document.xml */ =
    //     PackUriHelper.CreatePartUri(
    //         new Uri("Content\Document.xml", UriKind.Relative));
    // Uri partUriResource /* /Resources/Image1.jpg */ =
    //     PackUriHelper.CreatePartUri(
    //         new Uri("Resources\Image1.jpg", UriKind.Relative));
    Uri partUriDocument = PackUriHelper.CreatePartUri(
                              new Uri(documentPath, UriKind.Relative));
    Uri partUriResource = PackUriHelper.CreatePartUri(
                              new Uri(resourcePath, UriKind.Relative));

    // Create the Package
    // (If the package file already exists, FileMode.Create will
    //  automatically delete it first before creating a new one.
    //  The 'using' statement insures that 'package' is
    //  closed and disposed when it goes out of scope.)
    using (Package package =
        Package.Open(packagePath, FileMode.Create))
    {
        // Add the Document part to the Package
        PackagePart packagePartDocument =
            package.CreatePart(partUriDocument,
                           System.Net.Mime.MediaTypeNames.Text.Xml);

        // Copy the data to the Document Part
        using (FileStream fileStream = new FileStream(
               documentPath, FileMode.Open, FileAccess.Read))
        {
            CopyStream(fileStream, packagePartDocument.GetStream());
        }// end:using(fileStream) - Close and dispose fileStream.

        // Add a Package Relationship to the Document Part
        package.CreateRelationship(packagePartDocument.Uri,
                                   TargetMode.Internal,
                                   PackageRelationshipType);

        // Add a Resource Part to the Package
        PackagePart packagePartResource =
            package.CreatePart(partUriResource,
                           System.Net.Mime.MediaTypeNames.Image.Jpeg);

        // Copy the data to the Resource Part
        using (FileStream fileStream = new FileStream(
               resourcePath, FileMode.Open, FileAccess.Read))
        {
            CopyStream(fileStream, packagePartResource.GetStream());
        }// end:using(fileStream) - Close and dispose fileStream.

        // Add Relationship from the Document part to the Resource part
        packagePartDocument.CreateRelationship(
                                new Uri(@"../resources/image1.jpg",
                                UriKind.Relative),
                                TargetMode.Internal,
                                ResourceRelationshipType);
    }// end:using (Package package) - Close and dispose package.
}// end:CreatePackage()

//  --------------------------- CopyStream ---------------------------
/// <summary>
///   Copies data from a source stream to a target stream.</summary>
/// <param name="source">
///   The source stream to copy from.</param>
/// <param name="target">
///   The destination stream to copy to.</param>
private static void CopyStream(Stream source, Stream target)
{
    const int bufSize = 0x1000;
    byte[] buf = new byte[bufSize];
    int bytesRead = 0;
    while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
        target.Write(buf, 0, bytesRead);
}// end:CopyStream()
'  -------------------------- CreatePackage --------------------------
''' <summary>
'''   Creates a package zip file containing specified
'''   content and resource files.</summary>
Private Shared Sub CreatePackage()
    ' Convert system path and file names to Part URIs. In this example
    ' Dim partUriDocument as Uri /* /Content/Document.xml */ =
    '     PackUriHelper.CreatePartUri(
    '         New Uri("Content\Document.xml", UriKind.Relative))
    ' Dim partUriResource as Uri /* /Resources/Image1.jpg */ =
    '     PackUriHelper.CreatePartUri(
    '         New Uri("Resources\Image1.jpg", UriKind.Relative))
    Dim partUriDocument As Uri = PackUriHelper.CreatePartUri(New Uri(documentPath, UriKind.Relative))
    Dim partUriResource As Uri = PackUriHelper.CreatePartUri(New Uri(resourcePath, UriKind.Relative))

    ' Create the Package
    ' (If the package file already exists, FileMode.Create will
    '  automatically delete it first before creating a new one.
    '  The 'using' statement insures that 'package' is
    '  closed and disposed when it goes out of scope.)
    Using package As Package = Package.Open(packagePath, FileMode.Create)
        ' Add the Document part to the Package
        Dim packagePartDocument As PackagePart = package.CreatePart(partUriDocument, System.Net.Mime.MediaTypeNames.Text.Xml)

        ' Copy the data to the Document Part
        Using fileStream As New FileStream(documentPath, FileMode.Open, FileAccess.Read)
            CopyStream(fileStream, packagePartDocument.GetStream())
        End Using ' end:using(fileStream) - Close and dispose fileStream.

        ' Add a Package Relationship to the Document Part
        package.CreateRelationship(packagePartDocument.Uri, TargetMode.Internal, PackageRelationshipType)

        ' Add a Resource Part to the Package
        Dim packagePartResource As PackagePart = package.CreatePart(partUriResource, System.Net.Mime.MediaTypeNames.Image.Jpeg)

        ' Copy the data to the Resource Part
        Using fileStream As New FileStream(resourcePath, FileMode.Open, FileAccess.Read)
            CopyStream(fileStream, packagePartResource.GetStream())
        End Using ' end:using(fileStream) - Close and dispose fileStream.

        ' Add Relationship from the Document part to the Resource part
        packagePartDocument.CreateRelationship(New Uri("../resources/image1.jpg", UriKind.Relative), TargetMode.Internal, ResourceRelationshipType)

    End Using ' end:using (Package package) - Close and dispose package.

End Sub


'  --------------------------- CopyStream ---------------------------
''' <summary>
'''   Copies data from a source stream to a target stream.</summary>
''' <param name="source">
'''   The source stream to copy from.</param>
''' <param name="target">
'''   The destination stream to copy to.</param>
Private Shared Sub CopyStream(ByVal source As Stream, ByVal target As Stream)
    Const bufSize As Integer = &H1000
    Dim buf(bufSize - 1) As Byte
    Dim bytesRead As Integer = 0
    bytesRead = source.Read(buf, 0, bufSize)
    Do While bytesRead > 0
        target.Write(buf, 0, bytesRead)
        bytesRead = source.Read(buf, 0, bufSize)
    Loop
End Sub

Remarques

Package est une classe abstraite qui peut être utilisée pour organiser des objets en une seule entité d’un format physique défini pour la portabilité et un accès efficace.Package is an abstract class that can be used to organize objects into a single entity of a defined physical format for portability and efficient access.

Un fichier ZIP est le format physique principal de l' Package.A ZIP file is the primary physical format for the Package. D’autres implémentations de Package peuvent utiliser d’autres formats physiques, tels qu’un document XML, une base de données ou un service Web.Other Package implementations might use other physical formats such as an XML document, a database, or Web service.

Comme un système de fichiers, les éléments contenus dans un Package sont référencés dans une organisation hiérarchique de dossiers et de fichiers.Like a file system, items contained in a Package are referenced in a hierarchical organization of folders and files.

Bien que Package lui-même soit une classe abstraite, la ZipPackage classe dérivée est utilisée par défaut par la méthode Open.Although Package itself is an abstract class, the ZipPackage derived class is used as default by the Open method.

Une PackagePart (« partie ») est la classe abstraite qui représente un objet stocké dans une Package.A PackagePart ("part") is the abstract class that represents an object that is stored in a Package.

Une PackageRelationship (« Relationship ») définit une association entre un Package source ou PackagePart et un objet cible.A PackageRelationship ("relationship") defines an association between a source Package or PackagePart and a target object. Un PackageRelationship peut être l’un des deux types, chacun d’entre eux pouvant être de l’une des deux formes suivantes :A PackageRelationship can be one of two types, each of which can be one of two forms:

  • Une relation au niveau du package (créée par la méthode Package.CreateRelationship) associe un Package à l’un ou l’autre des éléments suivants :A package-level relationship (created by the Package.CreateRelationship method) relates a Package to either:

    • Composant cible dans le package.A target part in the package.

    • Ressource cible en dehors du package.A target resource outside the package.

  • Une relation au niveau du composant (créée par la méthode PackagePart.CreateRelationship) associe un PackagePart source à l’un ou l’autre des éléments suivants :A part-level relationship (created by the PackagePart.CreateRelationship method) relates a source PackagePart to either:

    • Une autre partie cible dans le package.Another target part in the package.

    • Ressource cible en dehors du package.A target resource outside the package.

Le Package source ou le PackagePart source de la relation est considéré comme le « propriétaire » de la relation.The relationship's source Package or source PackagePart is considered the "owner" of the relationship. Lorsque l’objet source est supprimé, toutes les relations détenues par l’objet source sont également supprimées.When the source object is deleted, all the relationships owned by the source object are also deleted. Le processus de création ou de suppression d’une relation ne change pas physiquement les objets source ou cible de quelque manière que ce soit.The process of creating or deleting a relationship does not physically change either the source or target objects in any way.

Une PackageDigitalSignature (« signature numérique ») est une composition de parties et de relations représentant une signature numérique incluse dans une Package.A PackageDigitalSignature ("digital signature") is a composition of parts and relationships representing a digital signature included with a Package. La signature numérique identifie l’expéditeur et valide que les parties et les relations signées contenues dans le Package n’ont pas été modifiées.The digital signature identifies the originator and validates that the signed parts and relationships contained in the Package have not been modified.

Les packages prennent également en charge les Rights Management numériques (DRM) qui autorisent le chiffrement des éléments de contenu dans un Package à l’aide de droits d’accès spécifiques accordés aux utilisateurs autorisés.Packages also support Digital Rights Management (DRM) which allows content elements in a Package to be encrypted with specific access rights granted to authorized users.

En fonction de l’architecture Package, un XpsDocument est un type de package conçu pour stocker des documents basés sur XPS (Open XML Paper Specification).Based on the Package architecture, an XpsDocument is a package type designed for storing documents based on the open XML Paper Specification (XPS).

Le .NET Framework utilise des packages pour stocker le contenu, les ressources et les relations des pages et des documents à l’aide d’un fichier ZIP standard par défaut.The .NET Framework uses packages to store content, resources, and relationships for pages and documents using a standard ZIP file by default. Comme avec tout fichier ZIP, votre application peut utiliser les classes de System.IO.Packaging pour stocker et éventuellement protéger tout type ou nombre de fichiers de données dans un seul conteneur d’accès efficace.As with any ZIP file, your application can use the System.IO.Packaging classes to store and optionally protect any type or number of data files in a single efficient-to-access container.

Pour plus d’informations, consultez la spécification Open Packaging Conventions (OPC) disponible en téléchargement à l’adresse https://go.microsoft.com/fwlink/?LinkID=71255.For more information, see the Open Packaging Conventions (OPC) specification available for download at https://go.microsoft.com/fwlink/?LinkID=71255.

Constructeurs

Package(FileAccess)

Initialise une nouvelle instance de la classe Package qui utilise un FileAccess donné.Initializes a new instance of the Package class that uses a given FileAccess.

Package(FileAccess, Boolean)

Initialise une nouvelle instance de la classe Package qui utilise un FileAccess et une option de diffusion donnés.Initializes a new instance of the Package class that uses a given FileAccess and streaming option.

Propriétés

FileOpenAccess

Obtient le paramètre d'accès au fichier pour le package.Gets the file access setting for the package.

PackageProperties

Obtient les propriétés principales du package.Gets the core properties of the package.

Méthodes

Close()

Enregistre et ferme le package ainsi que tout flux sous-jacent des composants.Saves and closes the package plus all underlying part streams.

CreatePart(Uri, String)

Crée un nouveau composant non compressé avec un URI et un type de contenu donnés.Creates a new uncompressed part with a given URI and content type.

CreatePart(Uri, String, CompressionOption)

Crée un nouveau composant avec un URI, un type de contenu et une option de compression donnés.Creates a new part with a given URI, content type, and compression option.

CreatePartCore(Uri, String, CompressionOption)

En cas de substitution dans une classe dérivée, crée un nouveau composant dans le package.When overridden in a derived class, creates a new part in the package.

CreateRelationship(Uri, TargetMode, String)

Crée une relation au niveau du package avec un composant avec URI, mode cible et type de relation donnés.Creates a package-level relationship to a part with a given URI, target mode, and relationship type.

CreateRelationship(Uri, TargetMode, String, String)

Crée une relation au niveau du package avec un composant avec URI, mode cible, type de relation et identificateur (ID)identifier (ID) donnés.Creates a package-level relationship to a part with a given URI, target mode, relationship type, and identificateur (ID)identifier (ID).

DeletePart(Uri)

Supprime du package un composant avec un URI donné.Deletes a part with a given URI from the package.

DeletePartCore(Uri)

En cas de substitution dans une classe dérivée, supprime un composant avec un URI donné.When overridden in a derived class, deletes a part with a given URI.

DeleteRelationship(String)

Supprime une relation au niveau du package.Deletes a package-level relationship.

Dispose(Boolean)

Vide et enregistre le contenu de tous les composants et relations, ferme le package et libère toutes les ressources.Flushes and saves the content of all parts and relationships, closes the package, and releases all resources.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
Flush()

Enregistre le contenu de tous les composants et relations contenus dans le package.Saves the contents of all parts and relationships that are contained in the package.

FlushCore()

En cas de substitution dans une classe dérivée, enregistre le contenu de tous les composants et relations dans le magasin de classes dérivées.When overridden in a derived class, saves the content of all parts and relationships to the derived class store.

GetHashCode()

Sert de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetPart(Uri)

Retourne le composant avec un URI donné.Returns the part with a given URI.

GetPartCore(Uri)

En cas de substitution dans une classe dérivée, retourne le composant adressé par un URI donné.When overridden in a derived class, returns the part addressed by a given URI.

GetParts()

Retourne une collection de tous les composants dans le package.Returns a collection of all the parts in the package.

GetPartsCore()

Lors d'une substitution dans une classe dérivée, retourne un tableau contenant tous les composants dans le package.When overridden in a derived class, returns an array of all the parts in the package.

GetRelationship(String)

Retourne la relation au niveau du package avec un identificateur donné.Returns the package-level relationship with a given identifier.

GetRelationships()

Retourne une collection de toutes les relations au niveau du package.Returns a collection of all the package-level relationships.

GetRelationshipsByType(String)

Retourne une collection de toutes les relations au niveau du package correspondant à un RelationshipType donné.Returns a collection of all the package-level relationships that match a given RelationshipType.

GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
Open(Stream)

Ouvre un package sur un flux de données E/S donné.Opens a package on a given IO stream.

Open(Stream, FileMode)

Ouvre un package avec un flux de données E/S et un mode de fichier donnés.Opens a package with a given IO stream and file mode.

Open(Stream, FileMode, FileAccess)

Ouvre un package avec un flux de données E/S, un mode de fichier et un paramètre d'accès au fichier donnés.Opens a package with a given IO stream, file mode, and file access setting.

Open(String)

Ouvre un package à un chemin d'accès et nom de fichier donnés.Opens a package at a given path and file name.

Open(String, FileMode)

Ouvre un package à un chemin d'accès donné au moyen d'un mode de fichier donné.Opens a package at a given path using a given file mode.

Open(String, FileMode, FileAccess)

Ouvre un package à un chemin d'accès donné à l'aide d'un mode de fichier et d'un paramètre d'accès au fichier donnés.Opens a package at a given path using a given file mode and file access setting.

Open(String, FileMode, FileAccess, FileShare)

Ouvre un package à un chemin d'accès donné à l'aide d'un mode de fichier, d'un chemin d'accès et d'un paramètre de partage de fichier donnés.Opens a package at a given path using a given file mode, file access, and file share setting.

PartExists(Uri)

Indique si un composant avec un URI donné est dans le package.Indicates whether a part with a given URI is in the package.

RelationshipExists(String)

Indique si une relation au niveau du package avec un ID donné est contenue dans le package.Indicates whether a package-level relationship with a given ID is contained in the package.

ToString()

Retourne une chaîne qui représente l'objet actif.Returns a string that represents the current object.

(Hérité de Object)

Implémentations d’interfaces explicites

IDisposable.Dispose()

Ce membre prend en charge l'infrastructure Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) et n'est pas conçu pour l'utilisation de l'application.This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended for application use. Utilisez plutôt la méthode de type sécurisé Dispose(Boolean).Use the type-safe Dispose(Boolean) method instead.

S’applique à

Voir aussi