Как реализовать префикс ресурсов для вложенных объектов
При работе с файлами Microsoft Project проекты могут содержать вложенные ресурсы такие как изображения или дополнительные файлы, встроенные в форматы вывода (например, файлы PNG внутри SVGs). Эффективное управление этими ресурсами важно для того, чтобы экспортированные файлы оставались упорядоченными и переносимыми. С помощью Aspose.Tasks for .NET, вы можете управлять тем, как вложенные ресурсы сохраняются во время операций экспорта. API предоставляет ResourceSavingArgs.NestedUri
свойство, которое позволяет разработчикам определить префикс или пользовательский путь для сохранения связанных ресурсов в отдельной папке. Это особенно полезно при экспорте в форматы, такие как SVG, HTML или другие, которые требуют нескольких связанных файлов.
Префикс ресурсов для вложенных объектов
Свойство ResourceSavingArgs.NestedUri
позволяет настраивать префиксы ресурсов для вложенных объектов. Это гарантирует, что все связанные файлы (например, встроенные изображения) правильно сохраняются и к ним правильно осуществляется обращение без конфликтов путей.
Пример кода
Следующий пример кода демонстрирует, как применить префикс ресурсов при экспорте вложенных объектов. Этот фрагмент показывает, как перехватить процесс сохранения, назначить пользовательский URI и убедиться, что все вложенные файлы сохраняются в правильном каталоге с заданной схемой именования.
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}
Часто задаваемые вопросы
В: Что такое вложенные ресурсы при экспорте из Microsoft Project?
- Вложенные ресурсы — это дополнительные файлы, такие как изображения или встроенные объекты, которые хранятся вместе с основным результатом проекта (например, файлы PNG внутри документов SVG).
В: Нужно ли устанавливать Microsoft Project, чтобы работать с вложенными ресурсами?
- Нет. Aspose.Tasks for .NET работает независимо от Microsoft Project и может программно обрабатывать экспорт ресурсов.
В: В каких форматах ResourceSavingArgs.NestedUri
обычно используется?
- Это особенно полезно при экспорте в SVG, HTML, или другие форматы, которые включают несколько связанных файлов.
В: Могу ли я настроить структуру папок для вложенных ресурсов?
- Да. Вы можете определить собственную иерархию папок и схему именования файлов, задав
NestedUri
соответствующее свойство.
Заключение
Управление вложенными ресурсами во время экспорта имеет решающее значение для поддержания организованности и надежности выходных данных проекта. С помощью ResourceSavingArgs.NestedUri
свойства в Aspose.Tasks for .NET, разработчики могут легко задавать пользовательские префиксы и структуру папок, обеспечивая правильное сохранение всех встроенных файлов. Такой подход гарантирует последовательный, переносимый и профессиональный экспорт файлов проекта.