Package com.openhtmltopdf.render
Class PageBox
- java.lang.Object
-
- com.openhtmltopdf.render.PageBox
-
public class PageBox extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PageBox.BottomLeftCorner
private static class
PageBox.BottomMarginArea
private static class
PageBox.BottomRightCorner
private static class
PageBox.LeftMarginArea
private static class
PageBox.MarginArea
private static class
PageBox.MarginAreaContainer
private static class
PageBox.PageDimensions
private static class
PageBox.RightMarginArea
private static class
PageBox.TopLeftCorner
private static class
PageBox.TopMarginArea
private static class
PageBox.TopRightCorner
-
Field Summary
Fields Modifier and Type Field Description private int
_basePagePdfPageIndex
private int
_bottom
private PageBox.MarginAreaContainer[]
_marginAreas
private org.w3c.dom.Element
_metadata
private int
_outerPageWidth
private PageBox.PageDimensions
_pageDimensions
private PageInfo
_pageInfo
private int
_pageNo
private int
_paintingBottom
private int
_paintingTop
private int
_shadowPageCount
private CalculatedStyle
_style
private int
_top
private int
_totalFootnoteHeight
private PageBox.MarginAreaContainer
currentMarginAreaContainer
private static int
LEADING_TRAILING_SPLIT
private static PageBox.MarginArea[]
MARGIN_AREA_DEFS
-
Constructor Summary
Constructors Constructor Description PageBox()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
exportLeadingText(RenderingContext c, java.io.Writer writer)
void
exportTrailingText(RenderingContext c, java.io.Writer writer)
int
getBasePagePdfPageIndex()
private java.awt.Rectangle
getBorderEdge(int left, int top, CssContext cssCtx)
int
getBottom()
Gets the document Y position in top down units (20 per CSS pixel for PDF)
Example: If each page is 500px high and has a 50px margin, then if this is called on the second page it will return 16_000, which is 2 x 400px x 20.int
getBottom(CssContext c)
If we are in a footnote callsgetBottom()
, otherwise usesgetBottomUsable()
.int
getBottomUsable()
Gets the document Y position taking into accountfloat: bottom
content such as footnotes.int
getContentHeight(CssContext cssCtx)
int
getContentWidth(CssContext cssCtx)
MarginBoxName[]
getCurrentMarginBoxNames()
IdentValue
getCutOffPageDirection()
java.awt.Rectangle
getDocumentCoordinatesContentBounds(CssContext c)
Get the rectangle that this page's content area will cover of the layed out document.java.awt.Rectangle
getDocumentCoordinatesContentBoundsForInsertedPage(CssContext c, int shadowPageNumber)
Get the shadow page (a page inserted to carry cut off content) content area of the layed out document.int
getFootnoteAreaHeight()
float
getFootnoteMaxHeight(CssContext c)
Gets the footnote area max-height if it is provided in the footnote at-rule for this page, otherwise -1.int
getHeight(CssContext cssCtx)
RectPropertySet
getMargin(CssContext cssCtx)
int
getMarginBorderPadding(CssContext cssCtx, int which)
int
getMaxInsertedPages()
The maximum number of shadow pages to insert for cut-off content.int
getMaxShadowPagesForXPos(CssContext c, int x)
Returns the number of shadow pages needed for a given x coordinate.org.w3c.dom.Element
getMetadata()
int
getOuterPageWidth()
java.awt.Rectangle
getPagedViewClippingBounds(CssContext cssCtx, int additionalClearance)
PageInfo
getPageInfo()
int
getPageNo()
int
getPaintingBottom()
int
getPaintingTop()
Example: If a page is 100 units high and has a 10 unit margin, this will return 0 for the first page and 80 for the second and so on.java.awt.Rectangle
getPrintClippingBounds(CssContext cssCtx)
java.awt.Rectangle
getPrintPaintingBounds(CssContext cssCtx)
java.awt.Rectangle
getScreenPaintingBounds(CssContext cssCtx, int additionalClearance)
int
getShadowPageCount()
CalculatedStyle
getStyle()
int
getTop()
Get the document Y index into this page.int
getWidth(CssContext cssCtx)
boolean
isFootnoteReserved(CssContext c)
If this page is reserved for footnote content.boolean
isLeftPage()
boolean
isRightPage()
void
layout(LayoutContext c)
private void
layoutMarginAreas(LayoutContext c)
void
paintBackground(RenderingContext c, int additionalClearance, short mode)
void
paintBorder(RenderingContext c, int additionalClearance, short mode)
void
paintMarginAreas(RenderingContext c, int additionalClearance, short mode)
private int
resolveAutoPageHeight(CssContext cssCtx)
Return the default page height if defined, else A4.private int
resolveAutoPageWidth(CssContext cssCtx)
Returns the default page width if defined, else the A4 page size width.private void
resolvePageDimensions(CssContext cssCtx)
private void
retrievePageMetadata(LayoutContext c)
void
setBasePagePdfPageIndex(int idx)
void
setFootnoteAreaHeight(int footnoteAreaHeight)
Sets the footnote area height on this page.void
setOuterPageWidth(int containingBlockWidth)
void
setPageInfo(PageInfo pageInfo)
void
setPageNo(int pageNo)
void
setPaintingBottom(int paintingBottom)
void
setPaintingTop(int paintingTop)
void
setShadowPageCount(int cnt)
void
setStyle(CalculatedStyle style)
void
setTopAndBottom(CssContext cssCtx, int top)
boolean
shouldInsertPages()
Should shadow pages be inserted for cut off content for this page.
-
-
-
Field Detail
-
MARGIN_AREA_DEFS
private static final PageBox.MarginArea[] MARGIN_AREA_DEFS
-
LEADING_TRAILING_SPLIT
private static final int LEADING_TRAILING_SPLIT
- See Also:
- Constant Field Values
-
_style
private CalculatedStyle _style
-
_top
private int _top
-
_bottom
private int _bottom
-
_paintingTop
private int _paintingTop
-
_paintingBottom
private int _paintingBottom
-
_pageNo
private int _pageNo
-
_outerPageWidth
private int _outerPageWidth
-
_pageDimensions
private PageBox.PageDimensions _pageDimensions
-
_pageInfo
private PageInfo _pageInfo
-
_marginAreas
private PageBox.MarginAreaContainer[] _marginAreas
-
_metadata
private org.w3c.dom.Element _metadata
-
_basePagePdfPageIndex
private int _basePagePdfPageIndex
-
_shadowPageCount
private int _shadowPageCount
-
_totalFootnoteHeight
private int _totalFootnoteHeight
-
currentMarginAreaContainer
private PageBox.MarginAreaContainer currentMarginAreaContainer
-
-
Method Detail
-
setBasePagePdfPageIndex
public void setBasePagePdfPageIndex(int idx)
-
setShadowPageCount
public void setShadowPageCount(int cnt)
-
getBasePagePdfPageIndex
public int getBasePagePdfPageIndex()
-
getShadowPageCount
public int getShadowPageCount()
-
getWidth
public int getWidth(CssContext cssCtx)
-
getHeight
public int getHeight(CssContext cssCtx)
-
resolvePageDimensions
private void resolvePageDimensions(CssContext cssCtx)
-
resolveAutoPageWidth
private int resolveAutoPageWidth(CssContext cssCtx)
Returns the default page width if defined, else the A4 page size width. Note: We previously returned different sizes based on locale, but this could lead to different results between developement machines and servers so we now always return A4.- Parameters:
cssCtx
-- Returns:
-
resolveAutoPageHeight
private int resolveAutoPageHeight(CssContext cssCtx)
Return the default page height if defined, else A4.- Parameters:
cssCtx
-- Returns:
-
getContentHeight
public int getContentHeight(CssContext cssCtx)
-
getContentWidth
public int getContentWidth(CssContext cssCtx)
-
getStyle
public CalculatedStyle getStyle()
-
setStyle
public void setStyle(CalculatedStyle style)
-
getBottom
public int getBottom()
Gets the document Y position in top down units (20 per CSS pixel for PDF)
Example: If each page is 500px high and has a 50px margin, then if this is called on the second page it will return 16_000, which is 2 x 400px x 20.
Note: Does not take into account footnotes and any otherfloat: bottom
content. For this, you can usegetBottomUsable()
.
Important: PrefergetBottom(CssContext)
over this method.
-
getBottomUsable
public int getBottomUsable()
Gets the document Y position taking into accountfloat: bottom
content such as footnotes. When laying in-flow content we use this method while when in footnotes we usegetBottom()
.
Important: PrefergetBottom(CssContext)
over this method.
-
getBottom
public int getBottom(CssContext c)
If we are in a footnote callsgetBottom()
, otherwise usesgetBottomUsable()
.
-
isFootnoteReserved
public boolean isFootnoteReserved(CssContext c)
If this page is reserved for footnote content.
-
getFootnoteAreaHeight
public int getFootnoteAreaHeight()
-
setFootnoteAreaHeight
public void setFootnoteAreaHeight(int footnoteAreaHeight)
Sets the footnote area height on this page.
-
getTop
public int getTop()
Get the document Y index into this page. SeegetBottom()
for example.
-
setTopAndBottom
public void setTopAndBottom(CssContext cssCtx, int top)
-
getPaintingBottom
public int getPaintingBottom()
-
setPaintingBottom
public void setPaintingBottom(int paintingBottom)
-
getPaintingTop
public int getPaintingTop()
Example: If a page is 100 units high and has a 10 unit margin, this will return 0 for the first page and 80 for the second and so on.- Returns:
- the y index into the document coordinates.
-
setPaintingTop
public void setPaintingTop(int paintingTop)
-
getScreenPaintingBounds
public java.awt.Rectangle getScreenPaintingBounds(CssContext cssCtx, int additionalClearance)
-
getPrintPaintingBounds
public java.awt.Rectangle getPrintPaintingBounds(CssContext cssCtx)
-
getDocumentCoordinatesContentBounds
public java.awt.Rectangle getDocumentCoordinatesContentBounds(CssContext c)
Get the rectangle that this page's content area will cover of the layed out document. For example: If a page is 100 units high and 150 wide and has a margin of 10 then this method will return a rect(0, 0, 130, 80) for the first page and a rect(0, 80, 130, 80) for the second and so on.
-
getDocumentCoordinatesContentBoundsForInsertedPage
public java.awt.Rectangle getDocumentCoordinatesContentBoundsForInsertedPage(CssContext c, int shadowPageNumber)
Get the shadow page (a page inserted to carry cut off content) content area of the layed out document. For example: If a page one is 100 units high and 150 wide and has a margin of 10 then this will return a rect(130, 0, 130, 80) for the first shadow page and a rect(260, 0, 130, 80) for the second shadow page assuming cut-off direction is LTR. For RTL the rects would be rect(-130, 0, 130, 80) and rect(-260, 0, 130, 80).
-
getMaxShadowPagesForXPos
public int getMaxShadowPagesForXPos(CssContext c, int x)
Returns the number of shadow pages needed for a given x coordinate. For example if x = 800 and content width = 1000 returns 0 (assumes LTR). For example if x = 2400 and content width = 900 returns 2 (assumes LTR).
-
shouldInsertPages
public boolean shouldInsertPages()
Should shadow pages be inserted for cut off content for this page.
-
getMaxInsertedPages
public int getMaxInsertedPages()
The maximum number of shadow pages to insert for cut-off content.
-
getCutOffPageDirection
public IdentValue getCutOffPageDirection()
- Returns:
- Either ltr (should insert cut-off content to the right of the page) or rtl (should insert cut-off content to the left of the page).
-
getPagedViewClippingBounds
public java.awt.Rectangle getPagedViewClippingBounds(CssContext cssCtx, int additionalClearance)
-
getPrintClippingBounds
public java.awt.Rectangle getPrintClippingBounds(CssContext cssCtx)
-
getMargin
public RectPropertySet getMargin(CssContext cssCtx)
-
getBorderEdge
private java.awt.Rectangle getBorderEdge(int left, int top, CssContext cssCtx)
-
paintBorder
public void paintBorder(RenderingContext c, int additionalClearance, short mode)
-
paintBackground
public void paintBackground(RenderingContext c, int additionalClearance, short mode)
-
paintMarginAreas
public void paintMarginAreas(RenderingContext c, int additionalClearance, short mode)
-
getCurrentMarginBoxNames
public MarginBoxName[] getCurrentMarginBoxNames()
-
getPageNo
public int getPageNo()
-
setPageNo
public void setPageNo(int pageNo)
-
getOuterPageWidth
public int getOuterPageWidth()
-
setOuterPageWidth
public void setOuterPageWidth(int containingBlockWidth)
-
getMarginBorderPadding
public int getMarginBorderPadding(CssContext cssCtx, int which)
-
getPageInfo
public PageInfo getPageInfo()
-
setPageInfo
public void setPageInfo(PageInfo pageInfo)
-
getMetadata
public org.w3c.dom.Element getMetadata()
-
layout
public void layout(LayoutContext c)
-
retrievePageMetadata
private void retrievePageMetadata(LayoutContext c)
-
layoutMarginAreas
private void layoutMarginAreas(LayoutContext c)
-
isLeftPage
public boolean isLeftPage()
-
isRightPage
public boolean isRightPage()
-
exportLeadingText
public void exportLeadingText(RenderingContext c, java.io.Writer writer) throws java.io.IOException
- Throws:
java.io.IOException
-
exportTrailingText
public void exportTrailingText(RenderingContext c, java.io.Writer writer) throws java.io.IOException
- Throws:
java.io.IOException
-
getFootnoteMaxHeight
public float getFootnoteMaxHeight(CssContext c)
Gets the footnote area max-height if it is provided in the footnote at-rule for this page, otherwise -1.
-
-