📄 pdfptable.java
字号:
* and the table crosses pages.
* @param headerRows the number of the top rows that constitute the header
*/
public void setHeaderRows(int headerRows) {
if (headerRows < 0)
headerRows = 0;
this.headerRows = headerRows;
}
/**
* Gets all the chunks in this element.
*
* @return an <CODE>ArrayList</CODE>
*/
public ArrayList getChunks() {
return new ArrayList();
}
/**
* Gets the type of the text element.
*
* @return a type
*/
public int type() {
return Element.PTABLE;
}
/**
* Processes the element by adding it (or the different parts) to an
* <CODE>ElementListener</CODE>.
*
* @param listener an <CODE>ElementListener</CODE>
* @return <CODE>true</CODE> if the element was processed successfully
*/
public boolean process(ElementListener listener) {
try {
return listener.add(this);
}
catch(DocumentException de) {
return false;
}
}
/** Gets the width percentage that the table will occupy in the page.
* @return the width percentage that the table will occupy in the page
*/
public float getWidthPercentage() {
return widthPercentage;
}
/** Sets the width percentage that the table will occupy in the page.
* @param widthPercentage the width percentage that the table will occupy in the page
*/
public void setWidthPercentage(float widthPercentage) {
this.widthPercentage = widthPercentage;
}
/** Gets the horizontal alignment of the table relative to the page.
* @return the horizontal alignment of the table relative to the page
*/
public int getHorizontalAlignment() {
return horizontalAlignment;
}
/** Sets the horizontal alignment of the table relative to the page.
* It only has meaning if the width percentage is less than
* 100%.
* @param horizontalAlignment the horizontal alignment of the table relative to the page
*/
public void setHorizontalAlignment(int horizontalAlignment) {
this.horizontalAlignment = horizontalAlignment;
}
/**
* Gets a row with a given index
* (added by Jin-Hsia Yang).
* @param idx
* @return the row at position idx
*/
public PdfPRow getRow(int idx) {
return (PdfPRow)rows.get(idx);
}
/**
* Gets an arraylist with all the rows in the table.
* @return an arraylist
*/
public ArrayList getRows() {
return rows;
}
/** Sets the table event for this table.
* @param event the table event for this table
*/
public void setTableEvent(PdfPTableEvent event) {
if (event == null) this.tableEvent = null;
else if (this.tableEvent == null) this.tableEvent = event;
else if (this.tableEvent instanceof PdfPTableEventForwarder) ((PdfPTableEventForwarder)this.tableEvent).addTableEvent(event);
else {
PdfPTableEventForwarder forward = new PdfPTableEventForwarder();
forward.addTableEvent(this.tableEvent);
forward.addTableEvent(event);
this.tableEvent = forward;
}
}
/** Gets the table event for this page.
* @return the table event for this page
*/
public PdfPTableEvent getTableEvent() {
return tableEvent;
}
/** Gets the absolute sizes of each column width.
* @return he absolute sizes of each column width
*/
public float[] getAbsoluteWidths() {
return absoluteWidths;
}
float [][] getEventWidths(float xPos, int firstRow, int lastRow, boolean includeHeaders) {
if (includeHeaders) {
firstRow = Math.max(firstRow, headerRows);
lastRow = Math.max(lastRow, headerRows);
}
float widths[][] = new float[(includeHeaders ? headerRows : 0) + lastRow - firstRow][];
if (isColspan) {
int n = 0;
if (includeHeaders) {
for (int k = 0; k < headerRows; ++k) {
PdfPRow row = (PdfPRow)rows.get(k);
if (row == null)
++n;
else
widths[n++] = row.getEventWidth(xPos);
}
}
for (; firstRow < lastRow; ++firstRow) {
PdfPRow row = (PdfPRow)rows.get(firstRow);
if (row == null)
++n;
else
widths[n++] = row.getEventWidth(xPos);
}
}
else {
float width[] = new float[absoluteWidths.length + 1];
width[0] = xPos;
for (int k = 0; k < absoluteWidths.length; ++k)
width[k + 1] = width[k] + absoluteWidths[k];
for (int k = 0; k < widths.length; ++k)
widths[k] = width;
}
return widths;
}
/** Getter for property skipFirstHeader.
* @return Value of property skipFirstHeader.
*/
public boolean isSkipFirstHeader() {
return skipFirstHeader;
}
/** Skips the printing of the first header. Used when printing
* tables in succession belonging to the same printed table aspect.
* @param skipFirstHeader New value of property skipFirstHeader.
*/
public void setSkipFirstHeader(boolean skipFirstHeader) {
this.skipFirstHeader = skipFirstHeader;
}
/**
* Sets the run direction of the contents of the table.
* @param runDirection
*/
public void setRunDirection(int runDirection) {
if (runDirection < PdfWriter.RUN_DIRECTION_DEFAULT || runDirection > PdfWriter.RUN_DIRECTION_RTL)
throw new RuntimeException("Invalid run direction: " + runDirection);
this.runDirection = runDirection;
}
/**
* Returns the run direction of the contents in the table.
* @return One of the following values: PdfWriter.RUN_DIRECTION_DEFAULT, PdfWriter.RUN_DIRECTION_NO_BIDI, PdfWriter.RUN_DIRECTION_LTR or PdfWriter.RUN_DIRECTION_RTL.
*/
public int getRunDirection() {
return runDirection;
}
/**
* Getter for property lockedWidth.
* @return Value of property lockedWidth.
*/
public boolean isLockedWidth() {
return this.lockedWidth;
}
/**
* Uses the value in <CODE>setTotalWidth()</CODE> in <CODE>Document.add()</CODE>.
* @param lockedWidth <CODE>true</CODE> to use the value in <CODE>setTotalWidth()</CODE> in <CODE>Document.add()</CODE>
*/
public void setLockedWidth(boolean lockedWidth) {
this.lockedWidth = lockedWidth;
}
/**
* Gets the split value.
* @return true to split; false otherwise
*/
public boolean isSplitRows() {
return this.splitRows;
}
/**
* When set the rows that won't fit in the page will be split.
* Note that it takes at least twice the memory to handle a split table row
* than a normal table. <CODE>true</CODE> by default.
* @param splitRows true to split; false otherwise
*/
public void setSplitRows(boolean splitRows) {
this.splitRows = splitRows;
}
/**
* Sets the spacing before this table.
*
* @param spacing the new spacing
*/
public void setSpacingBefore(float spacing) {
this.spacingBefore = spacing;
}
/**
* Sets the spacing after this table.
*
* @param spacing the new spacing
*/
public void setSpacingAfter(float spacing) {
this.spacingAfter = spacing;
}
/**
* Gets the spacing before this table.
*
* @return the spacing
*/
public float spacingBefore() {
return spacingBefore;
}
/**
* Gets the spacing before this table.
*
* @return the spacing
*/
public float spacingAfter() {
return spacingAfter;
}
/**
* Gets the value of the last row extension.
* @return true if the last row will extend; false otherwise
*/
public boolean isExtendLastRow() {
return this.extendLastRow;
}
/**
* When set the last row will be extended to fill all the remaining space to the
* bottom boundary.
* @param extendLastRow true to extend the last row; false otherwise
*/
public void setExtendLastRow(boolean extendLastRow) {
this.extendLastRow = extendLastRow;
}
/**
* Gets the header status inclusion in PdfPTableEvent.
* @return true if the headers are included; false otherwise
*/
public boolean isHeadersInEvent() {
return this.headersInEvent;
}
/**
* When set the PdfPTableEvent will include the headers.
* @param headersInEvent true to include the headers; false otherwise
*/
public void setHeadersInEvent(boolean headersInEvent) {
this.headersInEvent = headersInEvent;
}
/**
* Gets the property splitLate.
* @return the property splitLate
*/
public boolean isSplitLate() {
return this.splitLate;
}
/**
* If true the row will only split if it's the first one in an empty page.
* It's true by default.
*<p>
* It's only meaningful if setSplitRows(true).
* @param splitLate the property value
*/
public void setSplitLate(boolean splitLate) {
this.splitLate = splitLate;
}
/**
* If true the table will be kept on one page if it fits, by forcing a
* new page if it doesn't fit on the current page. The default is to
* split the table over multiple pages.
*
* @param p_KeepTogether whether to try to keep the table on one page
*/
public void setKeepTogether(boolean p_KeepTogether) {
keepTogether = p_KeepTogether;
}
public boolean getKeepTogether() {
return keepTogether;
}
/**
* Gets the number of rows in the footer.
* @return the number of rows in the footer
*/
public int getFooterRows() {
return this.footerRows;
}
/**
* Sets the number of rows to be used for the footer. The number
* of footer rows are subtracted from the header rows. For
* example, for a table with two header rows and one footer row the
* code would be:
* <p>
* <PRE>
* table.setHeaderRows(3);
* table.setFooterRows(1);
* </PRE>
* <p>
* Row 0 and 1 will be the header rows and row 2 will be the footer row.
* @param footerRows the number of rows to be used for the footer
*/
public void setFooterRows(int footerRows) {
if (footerRows < 0)
footerRows = 0;
this.footerRows = footerRows;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -