Comment implémenter le préfixe de ressources pour les ressources imbriquées
Cet article montre comment ajouter un préfixe de ressources pour les ressources imbriquées à l’aide de l’API Aspose.Tasks pour Java.
Préfixe de ressources pour les ressources imbriquées Aspose.Tasks pour Java fournit des propriétés ResourcesVavingArgs.Nesteduri qui permet d’économiser des ressources imbriquées (par exemple PNG dans les fichiers SVG) dans le dossier séparé.
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}