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 ?

Q : Ai-je besoin d’avoir Microsoft Project installé pour gérer les ressources imbriquées ?

Q : Dans quels formats est-il ResourceSavingArgs.NestedUri couramment utilisé ?

Q : Puis-je personnaliser la structure des dossiers pour les ressources imbriquées ?

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.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.