int reorderPages(int order[]) throws DocumentException {
if (order == null)
return pages.size();
if (parents.size() > 1)
throw new DocumentException(MessageLocalization.getComposedMessage("page.reordering.requires.a.single.parent.in.the.page.tree.call.pdfwriter.setlinearmode.after.open"));
if (order.length != pages.size())
throw new DocumentException(MessageLocalization.getComposedMessage("page.reordering.requires.an.array.with.the.same.size.as.the.number.of.pages"));
int max = pages.size();
boolean temp[] = new boolean[max];
for (int k = 0; k < max; ++k) {
int p = order[k];
if (p < 1 || p > max)
throw new DocumentException(MessageLocalization.getComposedMessage("page.reordering.requires.pages.between.1.and.1.found.2", String.valueOf(max), String.valueOf(p)));
if (temp[p - 1])
throw new DocumentException(MessageLocalization.getComposedMessage("page.reordering.requires.no.page.repetition.page.1.is.repeated", p));
temp[p - 1] = true;
}
PdfIndirectReference copy[] = pages.toArray(new PdfIndirectReference[pages.size()]);
for (int k = 0; k < max; ++k) {
pages.set(k, copy[order[k] - 1]);