private void breakPage(PDDocument document, PrintCursor cursor, PrintData printData) throws IOException { if (cursor.currentStream != null) { cursor.currentStream.close(); } if (printData.templateResource == null) { document.addPage(new PDPage(printData.pageConfig.getPageSize())); } else { PDDocument templateDoc = PDDocument.load(printData.templateResource.getInputStream()); cursor.cacheTempalte(templateDoc); PDPage templatePage = templateDoc.getDocumentCatalog().getPages().get(0); document.importPage(templatePage); } PDPage currPage = document.getDocumentCatalog().getPages().get(++cursor.currentPageNumber); cursor.currentStream = new PDPageContentStream(document, currPage, PDPageContentStream.AppendMode.APPEND, false); cursor.yPos = printData.pageConfig.getStartY(cursor.currentPageNumber); cursor.xPos = printData.pageConfig.getStartX(); }