/** * Create the image for the specified AnnotationStamp * * @param stamp the stamp to render * @param height the height of the stamp image * @param parser the PDFParser to use to convert * @since 2.1.19 */ public BufferedImage getStampImage(AnnotationStamp stamp, int height, PDFParser parser) { float rw = stamp.getRecommendedWidth(); float rh = stamp.getRecommendedHeight(); PDFPage page = new PDFPage((int) rw, (int) rh); stamp.setPage(page); stamp.setRectangle(0, 0, page.getWidth(), page.getHeight()); PagePainter painter = parser.getPagePainter(page); painter.setBackground(null); float dpi = height / rh * 72; return painter.getImage(dpi, PDFParser.RGBA); }
void setPage(PDFPage page, boolean forcevalidate) { currentPage = page; if (leftPage != null && leftPage == page) { currentPagePanel = leftPagePanel; if (!forcevalidate) { return; } } if (rightPage != null && rightPage == page) { currentPagePanel = rightPagePanel; if (!forcevalidate) { return; } } pagenumber = page.getPageNumber() - 1; int pagecount = pdf.getNumberOfPages(); boolean isOdd = (pagenumber % 2) == 0; // even pages have odd numbers :) boolean onRight = handedness == ODD_PAGES_ON_RIGHT ? isOdd : !isOdd; if (onRight) { setLeftPage((pagenumber > 0) ? pdf.getPage(pagenumber - 1) : null); setRightPage(page); currentPagePanel = rightPagePanel; } else { setLeftPage(page); setRightPage((pagenumber < (pagecount - 1)) ? pdf.getPage(pagenumber + 1) : null); currentPagePanel = leftPagePanel; } revalidate(); repaint(); }
public void setPage(PDFPage page, double x, double y, double zoom) { if (page.getPDF() != pdf) { throw new IllegalArgumentException("Page is from a different PDF"); } setZoom((float) zoom); Rectangle2D crop = PagePanel.getFullPageView(page); ensureVisible(page, crop.getMinX() + x, crop.getMaxY() - y, false); }
public int getPreviousSelectablePageIndex(PDFPage page) { if (page != null) { List<PDFPage> pages = page.getPDF().getPages(); int ix = pages.indexOf(page); if (ix > 0) { return Math.max(0, ix - (((ix & 1) == 0) == (handedness == ODD_PAGES_ON_LEFT) ? 1 : 2)); } } return -1; }
public int getNextSelectablePageIndex(PDFPage page) { if (page != null) { List<PDFPage> pages = page.getPDF().getPages(); int ix = pages.indexOf(page); if (ix >= 0 && ix < pages.size() - 1) { return Math.min( pages.size() - 1, ix + (((ix & 1) == 0) == (handedness == ODD_PAGES_ON_LEFT) ? 2 : 1)); } } return -1; }
public float getTargetZoom(int zoommode, PDFPage page) { float outzoom = zoom; if (page != null) { int pagenumber = page.getPageNumber() - 1; int pagecount = pdf.getNumberOfPages(); boolean isOdd = (pagenumber % 2) == 0; // even pages have odd numbers :) boolean onRight = handedness == ODD_PAGES_ON_RIGHT ? isOdd : !isOdd; PDFPage leftPage, rightPage; Rectangle2D.Float leftPageRect = null, rightPageRect = null; if (onRight) { leftPage = (pagenumber > 0) ? pdf.getPage(pagenumber - 1) : null; rightPage = page; } else { leftPage = page; rightPage = (pagenumber < (pagecount - 1)) ? pdf.getPage(pagenumber + 1) : null; } if (leftPage != null) { leftPageRect = (Rectangle2D.Float) PagePanel.getFullPageView(leftPage); } if (rightPage != null) { rightPageRect = (Rectangle2D.Float) PagePanel.getFullPageView(rightPage); } if (leftPageRect == null) { leftPageRect = (Rectangle2D.Float) rightPageRect.clone(); } if (rightPageRect == null) { rightPageRect = (Rectangle2D.Float) leftPageRect.clone(); } JScrollBar hsb = scrollPane.getHorizontalScrollBar(); JScrollBar vsb = scrollPane.getVerticalScrollBar(); float prw = leftPageRect.width + rightPageRect.width; float prh = Math.max(leftPageRect.height, rightPageRect.height); Dimension size = getSize(); float w = (float) Math.ceil(prw * Util.getScreenResolution(this) / 72) + (margin * 4) + interpagemargin + vsb.getWidth(); float h = (float) Math.ceil(prh * Util.getScreenResolution(this) / 72) + (margin * 2) + hsb.getHeight(); switch (zoommode) { case ZOOM_FITWIDTH: outzoom = (float) size.width / w; break; case ZOOM_FITHEIGHT: outzoom = (float) size.height / h; break; case ZOOM_FIT: float zw = (float) size.width / w; float zh = (float) size.height / h; outzoom = zw < zh ? zw : zh; break; default: outzoom = zoom == 0 ? 1 : zoom; } } return outzoom; }