Récupération des documents intégrés à partir des notes d'une tâche
Aperçu
Dans Microsoft Project Files (MPP), les notes de tâche peuvent contenir des documents intégrés - tels que les fichiers .txt
, .doc
ou .rtf
. Ces objets embarqués sont généralement stockés au format RTF dans la propriété `notesrtf» de la tâche.
Alors que Aspose.tasks pour .NET seul ne prend pas en charge entièrement l’analyse ou l’extraction de ces documents intégrés **, il peut être combiné avec ** Aspose.Words pour .NET ** pour interpréter le contenu RTF et récupérer les fichiers embarqués.
Cet article montre comment lire les données «notesrtf» d’une tâche et extraire des documents intégrés à l’aide d’Aspose.Words.
Exigences
Avant de continuer, assurez-vous de:
- Référence Aspose.tasks pour .NET pour accéder aux données des tâches;
- Référence ASPOSE.WORDS POUR .NET pour analyser et enregistrer des objets embarqués du contenu RTF.
Vous pouvez installer les deux bibliothèques via Nuget:
1Install-Package Aspose.Tasks
2Install-Package Aspose.Words
Récupération des documents intégrés des notes de tâche
L’extrait de code suivant:
- Charge le fichier MPP à l’aide de
ASPOSE.TASKS
; - Lit le contenu «notesrtf» de chaque tâche;
- Parses RTF en utilisant
ASPOSE.WORDS
; - Enregistre chaque objet intégré (s’il est trouvé) sur le disque.
✅ Exemple de code
{{\ «section “code-snippet” i18n-exclude>}}
1Project project = new Project("New Project.mpp");
2Task task = project.RootTask.Children.GetById(1);
3
4File.WriteAllText("Notes_out.rtf", task.Get(Tsk.NotesRTF));
5
6Document doc = null;
7using (MemoryStream stream = new MemoryStream())
8using (StreamWriter streamWriter = new StreamWriter(stream))
9{
10 streamWriter.Write(task.Get(Tsk.NotesRTF));
11 doc = new Document(stream);
12}
13
14NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);
15foreach (Aspose.Words.Drawing.Shape shape in shapes)
16{
17 if (shape.OleFormat != null)
18 {
19 if (!shape.OleFormat.IsLink)
20 {
21 // Extract OLE Word object
22 if (shape.OleFormat.ProgId == "Word.Document.12")
23 {
24 MemoryStream stream = new MemoryStream();
25 shape.OleFormat.Save(stream);
26
27 Document newDoc = new Document(stream);
28 newDoc.Save("RetrieveTaskEmbeddedDocuments_out.doc");
29 }
30 }
31 }
32}
Notes
- Les fichiers de sortie préserveront leur format et nom de fichier d’origine s’ils sont disponibles;
- Seules les notes basées sur RTF ** avec des objets OLE intégrés peuvent être traités;
- Assurez-vous de gérer les exceptions lors de l’analyse du RTF non pris en charge ou mal formé.
Résumé
En combinant aspose.tasks et aspose.words, les développeurs peuvent extraire des documents intégrés à partir de notes de tâche stockées dans les fichiers MPP. Cette approche est particulièrement utile lorsque les fichiers MPP sont utilisés pour transporter des spécifications ou des pièces jointes supplémentaires via le champ Notes.