Cómo implementar un prefijo de recursos para recursos anidados

Al trabajar con archivos de Microsoft Project, los proyectos pueden contener recursos anidados como imágenes u otros archivos adicionales incrustados dentro de formatos de salida (por ejemplo, archivos PNG dentro de SVGs). Gestionar estos recursos de forma eficiente es importante para garantizar que los archivos exportados permanezcan bien estructurados y sean portables. Con Aspose.Tasks for .NET, puedes controlar cómo se guardan los recursos anidados durante las operaciones de exportación. La API proporciona la ResourceSavingArgs.NestedUri propiedad, que permite a los desarrolladores definir un prefijo o una ruta personalizada para guardar los recursos relacionados en una carpeta separada. Esto es especialmente útil al exportar a formatos como SVG, HTML u otros que requieren múltiples archivos vinculados.

Prefijo de recursos para recursos anidados

La ResourceSavingArgs.NestedUri propiedad permite la configuración de prefijos de recursos para recursos anidados. Esto garantiza que todos los archivos relacionados (p. ej., imágenes incrustadas) se guarden y referencien correctamente sin conflictos de rutas.

Ejemplo de código

El siguiente ejemplo de código muestra cómo aplicar un prefijo de recursos al exportar recursos anidados. Este fragmento muestra cómo interceptar el proceso de guardado, asignar un URI personalizado y asegurar que todos los archivos anidados se almacenen en el directorio correcto con una convención de nombres definida.

 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}

Preguntas frecuentes

P: ¿Qué son los recursos anidados en las exportaciones de Microsoft Project?

P: ¿Necesito tener Microsoft Project instalado para manejar recursos anidados?

P: ¿En qué formatos se utiliza ResourceSavingArgs.NestedUri comúnmente?

P: ¿Puedo personalizar la estructura de carpetas para recursos anidados?

Conclusión

Gestionar los recursos anidados durante la exportación es esencial para mantener las salidas de proyecto organizadas y fiables. Con la ResourceSavingArgs.NestedUri propiedad en Aspose.Tasks for .NET, los desarrolladores pueden definir fácilmente prefijos personalizados y estructuras de carpetas, asegurando que todos los archivos incrustados se almacenen correctamente. Este enfoque garantiza exportaciones de archivos de proyecto coherentes, portables y profesionales.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.