private Rectangle getInitialExtents(LayoutContext c) { PageBox first = Layer.createPageBox(c, "first"); return new Rectangle(0, 0, first.getContentWidth(c), first.getContentHeight(c)); }
String pseudoPage = null; if (_pages == null) { _pages = new ArrayList(); } List pages = getPages(); if (pages.size() == 0) { pseudoPage = "first"; } else if (pages.size() % 2 == 0) { pseudoPage = "left"; } else { pseudoPage = "right"; } PageBox pageBox = createPageBox(c, pseudoPage); if (pages.size() == 0) { pageBox.setTopAndBottom(c, 0); } else { PageBox previous = (PageBox)pages.get(pages.size()-1); pageBox.setTopAndBottom(c, previous.getBottom()); } pageBox.setPageNo(pages.size()); pages.add(pageBox); } public void removeLastPage() {
PageBox first = Layer.createPageBox(layout, "first"); rootBox.setContainingBlock(new ViewportBox(new Rectangle(0, 0, first.getContentWidth(layout), first Dimension intrinsic_size = root.getPaintingDimension(layout); root.trimEmptyPages(layout, intrinsic_size.height); root.assignPagePaintingPositions(layout, Layer.PAGED_MODE_PRINT); List pages = root.getPages(); c.setPageCount(pages.size()); if (startPage < 0) { root.paint(c); c.getOutputDevice().translate(-left, -top);
_hasFixedContent = rootLayer.containsFixedContent(); Dimension intrinsic_size = rootLayer.getPaintingDimension(_layout_context); if (_layout_context.isPrint()) { rootLayer.trimEmptyPages(_layout_context, intrinsic_size.height); if (rootLayer.getLastPage() != null) { rootLayer.assignPagePaintingPositions(_layout_context, Layer.PAGED_MODE_SCREEN, PAGE_PAINTING_CLEARANCE); _drawnSize = new Point(rootLayer.getMaxPageWidth(_layout_context, PAGE_PAINTING_CLEARANCE), rootLayer.getLastPage().getPaintingBottom() + PAGE_PAINTING_CLEARANCE); } else {
public void layout() { LayoutContext c = newLayoutContext(); BlockBox root = BoxBuilder.createRootBox(c, _doc); root.setContainingBlock(new ViewportBox(getInitialExtents(c))); root.layout(c); Dimension dim = root.getLayer().getPaintingDimension(c); root.getLayer().trimEmptyPages(c, dim.height); root.getLayer().layoutPages(c); _root = root; }
private void paintPagedView(RenderingContext c, Layer root) { if (root.getLastPage() == null) { return; calcCenteredPageLeftOffset(root.getMaxPageWidth(c, 0)) : PAGE_PAINTING_CLEARANCE_WIDTH; root.assignPagePaintingPositions( c, Layer.PAGED_MODE_SCREEN, PAGE_PAINTING_CLEARANCE_HEIGHT); root.getMaxPageWidth(c, pagePaintingClearanceWidth), root.getLastPage().getPaintingBottom() + PAGE_PAINTING_CLEARANCE_HEIGHT)); revalidate(); Shape working = g.getClip(); List pages = root.getPages(); c.setPageCount(pages.size()); for (int i = 0; i < pages.size(); i++) { root.paint(c); g.translate(-left, -top);
if (root.getLayer().containsFixedContent()) { super.setOpaque(false); } else { Dimension intrinsic_size = root.getLayer().getPaintingDimension(c); root.getLayer().trimEmptyPages(c, intrinsic_size.height); root.getLayer().layoutPages(c); if (root.getLayer().containsFixedContent()) {
public int forcePageBreakBefore(LayoutContext c, IdentValue pageBreakValue, boolean pendingPageName) { PageBox page = c.getRootLayer().getFirstPage(c, this); if (page == null) { XRLog.layout(Level.WARNING, "Box has no page"); if (page.getTop() == getAbsY()) { pageBreakCount--; if (pendingPageName && page == c.getRootLayer().getLastPage()) { c.getRootLayer().removeLastPage(); c.setPageName(c.getPendingPageName()); c.getRootLayer().addPage(c); if (page == c.getRootLayer().getLastPage()) { c.getRootLayer().addPage(c); page = (PageBox)c.getRootLayer().getPages().get(page.getPageNo()+1); delta += page.getContentHeight(c); if (page == c.getRootLayer().getLastPage()) { c.getRootLayer().addPage(c);
private void writePDF(List pages, RenderingContext c, com.lowagie.text.Rectangle firstPageSize, com.lowagie.text.Document doc, PdfWriter writer) throws DocumentException { _outputDevice.setRoot(_root); _outputDevice.start(_doc); _outputDevice.setWriter(writer); _outputDevice.initializePage(writer.getDirectContent(), firstPageSize.getHeight()); _root.getLayer().assignPagePaintingPositions(c, Layer.PAGED_MODE_PRINT); int pageCount = _root.getLayer().getPages().size(); c.setPageCount(pageCount); firePreWrite(pageCount); // opportunity to adjust meta data setDidValues(doc); // set PDF header fields from meta data for (int i = 0; i < pageCount; i++) { if (isTimeouted() || Thread.currentThread().isInterrupted()) throw new RuntimeException("Timeout occured"); PageBox currentPage = (PageBox) pages.get(i); c.setPage(i, currentPage); paintPage(c, writer, currentPage); _outputDevice.finishPage(); if (i != pageCount - 1) { PageBox nextPage = (PageBox) pages.get(i + 1); com.lowagie.text.Rectangle nextPageSize = new com.lowagie.text.Rectangle(0, 0, nextPage.getWidth(c) / _dotsPerPoint, nextPage.getHeight(c) / _dotsPerPoint); doc.setPageSize(nextPageSize); doc.newPage(); _outputDevice.initializePage(writer.getDirectContent(), nextPageSize.getHeight()); } } _outputDevice.finish(c, _root); }
public PageBox getFirstPage(CssContext c, Box box) { return getPage(c, box.getAbsY()); }
private void paintLayers(RenderingContext c, List layers) { for (int i = 0; i < layers.size(); i++) { Layer layer = (Layer) layers.get(i); layer.paint(c); } }
List pages = getPages(); return pages.size() == 0 ? null : (PageBox)pages.get(pages.size()-1); } public boolean crossesPageBreak(LayoutContext c, int top, int bottom) {
private void paintPagedView(RenderingContext c, Layer root) { if (root.getLastPage() == null) { return; Shape working = out.getClip(); List pages = root.getPages(); c.setPageCount(pages.size()); for (int i = 0; i < pages.size(); i++) { root.paint(c); out.translate(-left, -top);
public void forcePageBreakAfter(LayoutContext c, IdentValue pageBreakValue) { boolean needSecondPageBreak = false; PageBox page = c.getRootLayer().getLastPage(c, this); if ((page.isLeftPage() && pageBreakValue == IdentValue.LEFT) || (page.isRightPage() && pageBreakValue == IdentValue.RIGHT)) { needSecondPageBreak = true; } int delta = page.getBottom() + c.getExtraSpaceTop() - (getAbsY() + getMarginBorderPadding(c, CalculatedStyle.TOP) + getHeight()); if (page == c.getRootLayer().getLastPage()) { c.getRootLayer().addPage(c); } if (needSecondPageBreak) { page = (PageBox)c.getRootLayer().getPages().get(page.getPageNo()+1); delta += page.getContentHeight(c); if (page == c.getRootLayer().getLastPage()) { c.getRootLayer().addPage(c); } } setHeight(getHeight() + delta); }
private void exportPageBoxText(RenderingContext c, Writer writer) throws IOException { c.getPage().exportTrailingText(c, writer); if (c.getPage() != c.getRootLayer().getLastPage()) { List pages = c.getRootLayer().getPages(); do { PageBox next = (PageBox)pages.get(c.getPageNo()+1); c.setPage(next.getPageNo(), next); next.exportLeadingText(c, writer); next.exportTrailingText(c, writer); } while (c.getPage() != c.getRootLayer().getLastPage()); } }
if (pageNo < 0 || pageNo >= root.getPages().size()) { throw new IllegalArgumentException("Page " + pageNo + " is not between 0 " + "and " + root.getPages().size()); PageBox page = (PageBox)root.getPages().get(pageNo); c.setPageCount(root.getPages().size()); c.setPage(pageNo, page); root.paint(c); g.translate(-left, -top);