You have to work on the JRPrint object rather than the JasperDesign object. Once you obtain the jasperPrint object, manipulate it similar to the code below. private static JasperPrint moveTableOfContents(JasperPrint jasperPrint) { if (jasperPrint != null) { List pages = jasperPrint.getPages(); if (pages != null && pages.size() > 0) { JRPrintPage page = null; Collection elements = null; Iterator it = null; JRPrintElement element = null; int i = pages.size() - 1; boolean isFound = false; List modifiedElements = new ArrayList(); while(i >= 0 && !isFound) { page = (JRPrintPage)pages.get(i); elements = page.getElements(); if (elements != null && elements.size() > 0) { it = elements.iterator(); int positionX = -1; int positionY = -1; while(it.hasNext() && !isFound) { element = (JRPrintElement)it.next(); if (element instanceof JRPrintFrame) { JRPrintFrame jrPrintFrame = (JRPrintFrame)element; List listElements = jrPrintFrame.getElements(); for (Object object : listElements) { System.out.println("object.getClass().getSimpleName()=" + object.getClass().getSimpleName()); } } if (element instanceof JRPrintText) { //System.out.println(key + ((JRPrintText)element).getText()); System.out.println("element.getY()+element.getWidth()=" + element.getY()+""+element.getWidth()); JRPrintText modifiedElement = ((JRPrintText)element); positionX = positionX == -1 ? (modifiedElement.getX()-modifiedElement.getWidth()): positionX; positionX+=modifiedElement.getWidth(); positionY = positionY == -1 ? (modifiedElement.getY()-modifiedElement.getHeight()): positionY; modifiedElement.setX(positionX); modifiedElement.setY(positionY); modifiedElements.add(modifiedElement); System.out.println("element.getY()+element.getWidth()=" + element.getY()+""+element.getWidth()); } modifiedElements.add(element); } } i--; } page.setElements(modifiedElements); //jasperPrint. //jasperPrint.addPage(0,jasperPrint.removePage(0)); } } return jasperPrint; } Here in this way you can resize, relocate any of the items in the report.