Comment implémenter un préfixe de ressources pour les ressources imbriquées
Lorsqu’on travaille avec des fichiers Microsoft Project, les projets peuvent contenir ressources imbriquées telles que des images ou des fichiers additionnels intégrés dans des formats de sortie (par exemple, des fichiers PNG dans des fichiers SVG). Gérer ces ressources efficacement est important pour garantir que les fichiers exportés restent bien structurés et portables. Avec Aspose.Tasks for .NET, vous pouvez contrôler la façon dont les ressources imbriquées sont enregistrées lors des opérations d’exportation. L’API fournit la ResourceSavingArgs.NestedUri
propriété, qui permet aux développeurs de définir un préfixe ou un chemin personnalisé pour enregistrer les ressources associées dans un dossier séparé. Ceci est particulièrement utile lors de l’exportation vers des formats comme SVG, HTML, ou d’autres nécessitant plusieurs fichiers liés.
Préfixe de ressources pour les ressources imbriquées
La ResourceSavingArgs.NestedUri
propriété permet la configuration des préfixes de ressources pour les ressources imbriquées. Cela garantit que tous les fichiers associés (par ex., les images intégrées) sont correctement enregistrés et référencés sans conflits de chemin.
Exemple de code
L’exemple de code suivant montre comment appliquer un préfixe de ressources lors de l’exportation de ressources imbriquées. Cet extrait montre comment intercepter le processus d’enregistrement, attribuer un URI personnalisé et garantir que tous les fichiers imbriqués sont stockés dans le répertoire correct avec une convention de nommage définie.
1public class ResourcePrefixForNestedResources : ICssSavingCallback, IFontSavingCallback, IImageSavingCallback
2{
3 public static void Run()
4 {
5 Project project = new Project("New Project.mpp");
6 HtmlSaveOptions options = GetSaveOptions(1);
7 project.Save("document.html", options);
8 }
9
10 public void CssSaving(CssSavingArgs args)
11 {
12 FileStream stream = new FileStream("css/" + args.FileName, FileMode.Create);
13 args.Stream = stream;
14 args.KeepStreamOpen = false;
15 args.Uri = "css/" + args.FileName;
16 }
17
18 public void FontSaving(FontSavingArgs args)
19 {
20 FileStream stream = new FileStream("fonts/" + args.FileName, FileMode.Create);
21 args.Stream = stream;
22 args.KeepStreamOpen = false;
23 args.Uri = "fonts/" + args.FileName;
24 }
25
26 public void ImageSaving(ImageSavingArgs args)
27 {
28 if (args.FileName.EndsWith("png"))
29 {
30 FileStream stream1 = new FileStream("resources/nestedResources/" + args.FileName, FileMode.Create);
31 args.Stream = stream1;
32 args.KeepStreamOpen = false;
33 args.Uri = "resources/" + args.FileName;
34 args.NestedUri = "nestedResources/" + args.FileName;
35 }
36 else
37 {
38 FileStream stream2 = new FileStream("resources/" + args.FileName, FileMode.Create);
39 args.Stream = stream2;
40 args.KeepStreamOpen = false;
41 args.Uri = "resources/" + args.FileName;
42 }
43 }
44
45 private static HtmlSaveOptions GetSaveOptions(int pageNumber)
46 {
47 HtmlSaveOptions options = new HtmlSaveOptions
48 {
49 Pages = new List<int>(),
50 IncludeProjectNameInPageHeader = false,
51 IncludeProjectNameInTitle = false,
52 PageSize = PageSize.A3,
53 Timescale = Timescale.ThirdsOfMonths,
54 ReduceFooterGap = true,
55 FontFaceTypes = FontFaceType.Ttf,
56 ExportCss = ResourceExportType.AsFile,
57 ExportFonts = ResourceExportType.AsFile,
58 ExportImages = ResourceExportType.AsFile
59 };
60
61 ResourcePrefixForNestedResources program = new ResourcePrefixForNestedResources();
62 options.FontSavingCallback = program;
63 options.CssSavingCallback = program;
64 options.ImageSavingCallback = program;
65
66 options.Pages.Clear();
67 options.Pages.Add(pageNumber);
68
69 if (!Directory.Exists("fonts"))
70 {
71 Directory.CreateDirectory("fonts");
72 }
73
74 if (!Directory.Exists("resources"))
75 {
76 Directory.CreateDirectory("resources");
77 }
78
79 if (!Directory.Exists("nestedResources"))
80 {
81 Directory.CreateDirectory("resources/nestedResources");
82 }
83
84 if (!Directory.Exists("css"))
85 {
86 Directory.CreateDirectory("css");
87 }
88
89 return options;
90 }
91}
Questions fréquentes
Q : Que sont les ressources imbriquées dans les exports Microsoft Project ?
- Les ressources imbriquées sont des fichiers supplémentaires tels que des images ou des objets intégrés qui sont stockés aux côtés de la sortie principale du projet (par ex., des fichiers PNG dans des documents SVG).
Q : Ai-je besoin d’avoir Microsoft Project installé pour gérer les ressources imbriquées ?
- Non. Aspose.Tasks for .NET fonctionne indépendamment de Microsoft Project et peut gérer l’exportation des ressources par programmation.
Q : Dans quels formats est-il ResourceSavingArgs.NestedUri
couramment utilisé ?
- Il est particulièrement utile lors de l’exportation vers SVG, HTML, ou d’autres formats qui incluent plusieurs fichiers liés.
Q : Puis-je personnaliser la structure des dossiers pour les ressources imbriquées ?
- Oui. Vous pouvez définir votre propre hiérarchie de dossiers et schéma de nommage des fichiers en réglant la
NestedUri
propriété en conséquence.
Conclusion
Gérer les ressources imbriquées lors de l’exportation est essentiel pour maintenir les sorties de projet organisées et fiables. Avec la ResourceSavingArgs.NestedUri
propriété dans Aspose.Tasks for .NET, les développeurs peuvent facilement définir des préfixes personnalisés et des structures de dossiers, garantissant que tous les fichiers intégrés sont correctement stockés. Cette approche garantit des exports de fichiers de projet cohérents, portables et professionnels.