/** * Rotates PageSize clockwise. */ public PageSize rotate() { return new PageSize(height, width); }
@Override public Rectangle clone() { return new PageSize(this); } }
/** * Gets page size, considering page rotation. * * @return {@link Rectangle} that specify size of rotated page. */ public Rectangle getPageSizeWithRotation() { PageSize rect = new PageSize(getPageSize()); int rotation = getRotation(); while (rotation > 0) { rect = rect.rotate(); rotation -= 90; } return rect; }
/** * 将图片合成为一个PDF * @param inputImage 图片,格式为图片格式 * @param outputPDF 输出文件 * @throws FileNotFoundException * @throws MalformedURLException */ public static void generatePDFFromImage(File[] inputImage,File outputPDF) throws FileNotFoundException, MalformedURLException { List<Image>images=new LinkedList<>(); for(File file:inputImage){ images.add(new Image(ImageDataFactory.create(file.getPath()))); } PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputPDF.getPath())); images.forEach(image -> pdfDoc.addNewPage(new PageSize(new Rectangle(image.getImageScaledWidth(), image.getImageScaledHeight())))); BackgroundEventHandler handler = new BackgroundEventHandler(images); pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, handler); pdfDoc.close(); }
images.forEach(image -> pdfDoc.addNewPage(new PageSize(new Rectangle(image.getImageScaledWidth(), image.getImageScaledHeight())))); BackgroundEventHandler handler = new BackgroundEventHandler(images); pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, handler);
protected LayoutArea updateCurrentArea(LayoutResult overflowResult) { flushWaitingDrawingElements(); LayoutTaggingHelper taggingHelper = this.<LayoutTaggingHelper>getProperty(Property.TAGGING_HELPER); if (taggingHelper != null) { taggingHelper.releaseFinishedHints(); } AreaBreak areaBreak = overflowResult != null && overflowResult.getAreaBreak() != null ? overflowResult.getAreaBreak() : null; if (areaBreak != null && areaBreak.getType() == AreaBreakType.LAST_PAGE) { while (currentPageNumber < document.getPdfDocument().getNumberOfPages()) { moveToNextPage(); } } else { moveToNextPage(); } PageSize customPageSize = areaBreak != null ? areaBreak.getPageSize() : null; while (document.getPdfDocument().getNumberOfPages() >= currentPageNumber && document.getPdfDocument().getPage(currentPageNumber).isFlushed()) { currentPageNumber++; } PageSize lastPageSize = ensureDocumentHasNPages(currentPageNumber, customPageSize); if (lastPageSize == null) { lastPageSize = new PageSize(document.getPdfDocument().getPage(currentPageNumber).getTrimBox()); } return (currentArea = new RootLayoutArea(currentPageNumber, getCurrentPageEffectiveArea(lastPageSize))); }
protected LayoutArea updateCurrentArea(LayoutResult overflowResult) { flushWaitingDrawingElements(); LayoutTaggingHelper taggingHelper = this.<LayoutTaggingHelper>getProperty(Property.TAGGING_HELPER); if (taggingHelper != null) { taggingHelper.releaseFinishedHints(); } AreaBreak areaBreak = overflowResult != null && overflowResult.getAreaBreak() != null ? overflowResult.getAreaBreak() : null; if (areaBreak != null && areaBreak.getType() == AreaBreakType.LAST_PAGE) { while (currentPageNumber < document.getPdfDocument().getNumberOfPages()) { moveToNextPage(); } } else { moveToNextPage(); } PageSize customPageSize = areaBreak != null ? areaBreak.getPageSize() : null; while (document.getPdfDocument().getNumberOfPages() >= currentPageNumber && document.getPdfDocument().getPage(currentPageNumber).isFlushed()) { currentPageNumber++; } PageSize lastPageSize = ensureDocumentHasNPages(currentPageNumber, customPageSize); if (lastPageSize == null) { lastPageSize = new PageSize(document.getPdfDocument().getPage(currentPageNumber).getTrimBox()); } return (currentArea = new RootLayoutArea(currentPageNumber, getCurrentPageEffectiveArea(lastPageSize))); }
pdfDocument.setDefaultPageSize(new PageSize(width, height)); PdfPage page = pdfDocument.addNewPage(); PdfCanvas pageCanvas = new PdfCanvas(page);