Як реалізувати префікс ресурсів для вкладених ресурсів
У цій статті показано, як додати префікс ресурсів для вкладених ресурсів за допомогою Aspope.Tasks для Java API.
Префікс ресурсів для вкладених ресурсів Aspose.Tasks для java забезпечує Resourcesaveargs.nesteduri властивість, що дозволяє зберегти вкладені ресурси (наприклад, PNG всередині файлів SVG) у окремій папці.
1public class ResourcePrefixForNestedResources implements IFontSavingCallback, ICssSavingCallback, IImageSavingCallback {
2
3 public static String dataDir = Utils.getDataDir(ResourcePrefixForNestedResources.class);
4
5 public static void main(String[] args) throws IOException {
6 FileInputStream fs = new FileInputStream(dataDir + "Project1.mpp");
7 Project project = new Project(fs);
8 HtmlSaveOptions options = GetSaveOptions(1);
9 FileOutputStream stream = new FileOutputStream(dataDir + "document.html");
10 project.save(stream, options);
11 }
12
13 public void cssSaving(CssSavingArgs args) {
14 FileOutputStream stream;
15 try {
16 stream = new FileOutputStream(dataDir + "css/" + args.getFileName());
17 args.setStream(stream);
18 args.setKeepStreamOpen(false);
19 args.setUri(dataDir + "css/" + args.getFileName());
20 } catch (FileNotFoundException e) {
21 e.printStackTrace();
22 }
23 }
24
25 public void fontSaving(FontSavingArgs args) {
26 FileOutputStream stream;
27 try {
28 stream = new FileOutputStream(dataDir + "fonts/" + args.getFileName());
29 args.setStream(stream);
30 args.setKeepStreamOpen(false);
31 args.setUri(dataDir + "fonts/" + args.getFileName());
32 } catch (FileNotFoundException e) {
33 e.printStackTrace();
34 }
35 }
36
37 public void imageSaving(ImageSavingArgs args) {
38 if (args.getFileName().endsWith("png")) {
39 FileOutputStream stream1;
40 try {
41 stream1 = new FileOutputStream(dataDir + "resources/nestedResources/" + args.getFileName());
42 args.setStream(stream1);
43 args.setKeepStreamOpen(false);
44 args.setUri(dataDir + "resources/" + args.getFileName());
45 args.setNestedUri(dataDir + "nestedResources/" + args.getFileName());
46 } catch (FileNotFoundException e) {
47 e.printStackTrace();
48 }
49 } else {
50 FileOutputStream stream2;
51 try {
52 stream2 = new FileOutputStream(dataDir + "resources/" + args.getFileName());
53 args.setStream(stream2);
54 args.setKeepStreamOpen(false);
55 args.setUri(dataDir + "resources/" + args.getFileName());
56 } catch (FileNotFoundException e) {
57 e.printStackTrace();
58 }
59 }
60 }
61
62 private static HtmlSaveOptions GetSaveOptions(int pageNumber) {
63 HtmlSaveOptions saveOptions = new HtmlSaveOptions();
64 saveOptions.setIncludeProjectNameInPageHeader(false);
65 saveOptions.setIncludeProjectNameInTitle(false);
66 saveOptions.setPageSize(PageSize.A3);
67 saveOptions.setTimescale(Timescale.ThirdsOfMonths);
68 saveOptions.setReduceFooterGap(true);
69 saveOptions.setFontFaceTypes(FontFaceType.Ttf);
70 saveOptions.setExportCss(ResourceExportType.AsFile);
71 saveOptions.setExportFonts(ResourceExportType.AsFile);
72 saveOptions.setExportImages(ResourceExportType.AsFile);
73
74 ResourcePrefixForNestedResources program = new ResourcePrefixForNestedResources();
75 saveOptions.setFontSavingCallback(program);
76 saveOptions.setCssSavingCallback(program);
77 saveOptions.setImageSavingCallback(program);
78
79 saveOptions.getPages().clear();
80 saveOptions.getPages().add(pageNumber);
81
82 File dirFonts = new File(dataDir + "fonts");
83 if (!dirFonts.exists()) {
84 dirFonts.mkdir();
85 }
86
87 File dirResources = new File(dataDir + "resources");
88 if (!dirResources.exists()) {
89 dirResources.mkdir();
90 }
91
92 File dirNResources = new File(dataDir + "nestedResources");
93 if (!dirNResources.exists()) {
94 dirNResources.mkdir();
95 }
96
97 File dirCSS = new File(dataDir + "css");
98 if (!dirCSS.exists()) {
99 dirCSS.mkdir();
100 }
101
102 return saveOptions;
103 }
104
105}