📄 rtfrow.java
字号:
int cellRight = 0;
int cellWidth = 0;
for(int i = 0; i < row.getColumns(); i++) {
cellWidth = (int) (this.width * this.parentTable.getProportionalWidths()[i] / 100);
cellRight = cellRight + cellWidth;
Cell cell = (Cell) row.getCell(i);
RtfCell rtfCell = new RtfCell(this.document, this, cell);
rtfCell.setCellRight(cellRight);
rtfCell.setCellWidth(cellWidth);
this.cells.add(rtfCell);
}
}
/**
* Performs a second pass over all cells to handle cell row/column spanning.
*/
protected void handleCellSpanning() {
RtfCell deletedCell = new RtfCell(true);
for(int i = 0; i < this.cells.size(); i++) {
RtfCell rtfCell = (RtfCell) this.cells.get(i);
if(rtfCell.getColspan() > 1) {
int cSpan = rtfCell.getColspan();
for(int j = i + 1; j < i + cSpan; j++) {
if(j < this.cells.size()) {
RtfCell rtfCellMerge = (RtfCell) this.cells.get(j);
rtfCell.setCellRight(rtfCell.getCellRight() + rtfCellMerge.getCellWidth());
rtfCell.setCellWidth(rtfCell.getCellWidth() + rtfCellMerge.getCellWidth());
this.cells.set(j, deletedCell);
}
}
}
if(rtfCell.getRowspan() > 1) {
ArrayList rows = this.parentTable.getRows();
for(int j = 1; j < rtfCell.getRowspan(); j++) {
RtfRow mergeRow = (RtfRow) rows.get(this.rowNumber + j);
if(this.rowNumber + j < rows.size()) {
RtfCell rtfCellMerge = (RtfCell) mergeRow.getCells().get(i);
rtfCellMerge.setCellMergeChild(rtfCell);
}
if(rtfCell.getColspan() > 1) {
int cSpan = rtfCell.getColspan();
for(int k = i + 1; k < i + cSpan; k++) {
if(k < mergeRow.getCells().size()) {
mergeRow.getCells().set(k, deletedCell);
}
}
}
}
}
}
}
/**
* Cleans the deleted RtfCells from the total RtfCells.
*/
protected void cleanRow() {
int i = 0;
while(i < this.cells.size()) {
if(((RtfCell) this.cells.get(i)).isDeleted()) {
this.cells.remove(i);
} else {
i++;
}
}
}
/**
* Writes the row definition/settings.
*
* @return A byte array with the row definitions/settings.
* @deprecated replaced by {@link #writeRowDefinitions(OutputStream)}
*/
private byte[] writeRowDefinitions() {
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
writeRowDefinitions(result);
} catch(IOException ioe) {
ioe.printStackTrace();
}
return result.toByteArray();
}
/**
* Writes the row definition/settings.
*/
private void writeRowDefinitions(final OutputStream result) throws IOException
{
result.write(ROW_BEGIN);
result.write('\n');
result.write(ROW_WIDTH_STYLE);
result.write(ROW_WIDTH);
result.write(intToByteArray(this.width));
if(this.parentTable.getCellsFitToPage()) {
result.write(ROW_KEEP_TOGETHER);
}
if(this.rowNumber <= this.parentTable.getHeaderRows()) {
result.write(ROW_HEADER_ROW);
}
switch (this.parentTable.getAlignment()) {
case Element.ALIGN_LEFT:
result.write(ROW_ALIGN_LEFT);
break;
case Element.ALIGN_RIGHT:
result.write(ROW_ALIGN_RIGHT);
break;
case Element.ALIGN_CENTER:
result.write(ROW_ALIGN_CENTER);
break;
case Element.ALIGN_JUSTIFIED:
case Element.ALIGN_JUSTIFIED_ALL:
result.write(ROW_ALIGN_JUSTIFIED);
break;
}
result.write(ROW_GRAPH);
//.result.write(this.parentTable.getBorders().write());
this.parentTable.getBorders().writeContent(result);
if(this.parentTable.getCellSpacing() > 0) {
result.write(ROW_CELL_SPACING_LEFT);
result.write(intToByteArray((int) (this.parentTable.getCellSpacing() / 2)));
result.write(ROW_CELL_SPACING_LEFT_STYLE);
result.write(ROW_CELL_SPACING_TOP);
result.write(intToByteArray((int) (this.parentTable.getCellSpacing() / 2)));
result.write(ROW_CELL_SPACING_TOP_STYLE);
result.write(ROW_CELL_SPACING_RIGHT);
result.write(intToByteArray((int) (this.parentTable.getCellSpacing() / 2)));
result.write(ROW_CELL_SPACING_RIGHT_STYLE);
result.write(ROW_CELL_SPACING_BOTTOM);
result.write(intToByteArray((int) (this.parentTable.getCellSpacing() / 2)));
result.write(ROW_CELL_SPACING_BOTTOM_STYLE);
}
result.write(ROW_CELL_PADDING_LEFT);
result.write(intToByteArray((int) (this.parentTable.getCellPadding() / 2)));
result.write(ROW_CELL_PADDING_RIGHT);
result.write(intToByteArray((int) (this.parentTable.getCellPadding() / 2)));
result.write(ROW_CELL_PADDING_LEFT_STYLE);
result.write(ROW_CELL_PADDING_RIGHT_STYLE);
result.write('\n');
for(int i = 0; i < this.cells.size(); i++) {
RtfCell rtfCell = (RtfCell) this.cells.get(i);
//result.write(rtfCell.writeDefinition());
rtfCell.writeDefinition(result);
}
}
/**
* Writes the content of this RtfRow
*
* @return A byte array with the content of this RtfRow
* @deprecated replaced by {@link #writeContent(OutputStream)}
*/
public byte[] write()
{
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
writeContent(result);
} catch(IOException ioe) {
ioe.printStackTrace();
}
return result.toByteArray();
}
/**
* Writes the content of this RtfRow
*/
public void writeContent(final OutputStream result) throws IOException
{
//.result.write(writeRowDefinitions());
writeRowDefinitions(result);
for(int i = 0; i < this.cells.size(); i++) {
RtfCell rtfCell = (RtfCell) this.cells.get(i);
//.result.write(rtfCell.write());
rtfCell.writeContent(result);
}
result.write(DELIMITER);
if(this.document.getDocumentSettings().isOutputTableRowDefinitionAfter()) {
//.result.write(writeRowDefinitions());
writeRowDefinitions(result);
}
result.write(ROW_END);
result.write("\n".getBytes());
}
/**
* Gets the parent RtfTable of this RtfRow
*
* @return The parent RtfTable of this RtfRow
*/
protected RtfTable getParentTable() {
return this.parentTable;
}
/**
* Gets the cells of this RtfRow
*
* @return The cells of this RtfRow
*/
protected ArrayList getCells() {
return this.cells;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -