Please find the entire code below. The slowness in merging is present irrespective of the deck I use.
package aspose20;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ISlideCollection;
public class MergeSlide {
public static void main(String args[]) throws IOException {
System.out.println(“Merging Started!”);
Presentation p_new = new Presentation();
ISlideCollection slds = p_new.getSlides();
//Any File location
String file1 = "C:\\data\\deck1.pptx";
String file2 = "C:\\data\\deck2.pptx";
String[] inputs = {file1, file2};
// Index of slides to merge
int deck1[] = new int[]{75, 17};
int deck2[] = new int[]{15, 6}
int [][] pptarr = {deck1, deck2};
boolean test;
long startTimefi = System.nanoTime();
for(int p_no = 0; p_no < inputs.length; p_no++) {
System.out.println(inputs[p_no]);
long startTime = System.nanoTime();
Presentation p = new Presentation(inputs[p_no]);
long endTime = System.nanoTime();
System.out.println("Reading "+TimeUnit.SECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS) + " s");
for (int index = 0; index< p.getSlides().size(); index = index+1) {
// Merge slides from source to target
final Integer innersc = new Integer(index);
// Check if this slide is to be merged
test = IntStream.of(pptarr[p_no]).anyMatch(x -> x == innersc);
if(test){
startTime = System.nanoTime();
slds.addClone(p.getSlides().get_Item(index));
endTime = System.nanoTime();
System.out.println("Merging "+TimeUnit.SECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS) + " s");
}
}
}
long endTimefi = System.nanoTime();
System.out.println("Took “+TimeUnit.SECONDS.convert((endTimefi - startTimefi), TimeUnit.NANOSECONDS) + " s”);
// Save the presentation
p_new.save(“merged-presentation.pptx”, SaveFormat.Pptx);
System.out.println(“Merging Done!” + p_new.getSlides().size());
}
}