pdfptable.java
来自「处理PDF」· Java 代码 · 共 1,164 行 · 第 1/3 页
JAVA
1,164 行
*/ public int type() { return Element.PTABLE; } /** * @see com.lowagie.text.Element#isContent() * @since iText 2.0.8 */ public boolean isContent() { return true; } /** * @see com.lowagie.text.Element#isNestable() * @since iText 2.0.8 */ public boolean isNestable() { return true; } /** * 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 after 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; } /** * Completes the current row with the default cell. An incomplete row will be dropped * but calling this method will make sure that it will be present in the table. */ public void completeRow() { while (currentRowIdx > 0) { addCell(defaultCell); } } /** * @since iText 2.0.8 * @see com.lowagie.text.LargeElement#flushContent() */ public void flushContent() { deleteBodyRows(); setSkipFirstHeader(true); } /** * @since iText 2.0.8 * @see com.lowagie.text.LargeElement#isComplete() */ public boolean isComplete() { return complete; } /** * @since iText 2.0.8 * @see com.lowagie.text.LargeElement#setComplete(boolean) */ public void setComplete(boolean complete) { this.complete = complete; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?