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?
- Los recursos anidados son archivos adicionales, como imágenes u objetos incrustados, que se almacenan junto con la salida principal del proyecto (p. ej., archivos PNG dentro de documentos SVG).
P: ¿Necesito tener Microsoft Project instalado para manejar recursos anidados?
- R: No. Aspose.Tasks for .NET funciona de forma independiente de Microsoft Project y puede manejar la exportación de recursos programáticamente.
P: ¿En qué formatos se utiliza ResourceSavingArgs.NestedUri
comúnmente?
- Es especialmente útil cuando se exporta a SVG, HTML, u otros formatos que incluyan múltiples archivos vinculados.
P: ¿Puedo personalizar la estructura de carpetas para recursos anidados?
- R: Sí. Puedes definir tu propia jerarquía de carpetas y esquema de nombres de archivos estableciendo la
NestedUri
propiedad correspondiente.
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.