You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2021/04/13 21:37:33 UTC
svn commit: r1888746 [2/3] - in /poi/trunk/poi-scratchpad: ./
src/main/java/org/apache/poi/hpbf/dev/
src/main/java/org/apache/poi/hslf/record/
src/main/java/org/apache/poi/hsmf/extractor/
src/main/java/org/apache/poi/hssf/converter/ src/main/java/org/a...
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java Tue Apr 13 21:37:33 2021
@@ -16,6 +16,16 @@
==================================================================== */
package org.apache.poi.hssf.converter;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.appendAlign;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.buildMergedRangesMap;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.getBorderStyle;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.getBorderWidth;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.getColor;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.getMergedRange;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.isEmpty;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.isNotEmpty;
+import static org.apache.poi.hssf.converter.AbstractExcelUtils.loadXls;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -53,8 +63,6 @@ import org.w3c.dom.Text;
/**
* Converts xls files (97-2007) to HTML file.
- *
- * @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
*/
@Beta
public class ExcelToHtmlConverter extends AbstractExcelConverter {
@@ -69,37 +77,36 @@ public class ExcelToHtmlConverter extend
* Where infile is an input .xls file ( Word 97-2007) which will be rendered
* as HTML into outfile
*/
- public static void main( String[] args ) throws Exception {
- if ( args.length < 2 ) {
- System.err.println( "Usage: ExcelToHtmlConverter <inputFile.xls> <saveTo.html>" );
+ public static void main(String[] args) throws Exception {
+ if (args.length < 2) {
+ System.err.println("Usage: ExcelToHtmlConverter <inputFile.xls> <saveTo.html>");
return;
}
- System.out.println( "Converting " + args[0] );
- System.out.println( "Saving output to " + args[1] );
+ System.out.println("Converting " + args[0]);
+ System.out.println("Saving output to " + args[1]);
- Document doc = ExcelToHtmlConverter.process( new File( args[0] ) );
+ Document doc = ExcelToHtmlConverter.process(new File(args[0]));
- DOMSource domSource = new DOMSource( doc );
- StreamResult streamResult = new StreamResult( new File(args[1]) );
+ DOMSource domSource = new DOMSource(doc);
+ StreamResult streamResult = new StreamResult(new File(args[1]));
Transformer serializer = XMLHelper.newTransformer();
// TODO set encoding from a command argument
- serializer.setOutputProperty( OutputKeys.METHOD, "html" );
- serializer.transform( domSource, streamResult );
+ serializer.setOutputProperty(OutputKeys.METHOD, "html");
+ serializer.transform(domSource, streamResult);
}
/**
* Converts Excel file (97-2007) into HTML file.
*
- * @param xlsFile
- * workbook file to process
+ * @param xlsFile workbook file to process
* @return DOM representation of result HTML
- * @throws IOException If an error occurs reading or writing files
+ * @throws IOException If an error occurs reading or writing files
* @throws ParserConfigurationException If configuration is incorrect
*/
- public static Document process( File xlsFile ) throws IOException, ParserConfigurationException {
- try (HSSFWorkbook workbook = AbstractExcelUtils.loadXls(xlsFile)) {
+ public static Document process(File xlsFile) throws IOException, ParserConfigurationException {
+ try (HSSFWorkbook workbook = loadXls(xlsFile)) {
return ExcelToHtmlConverter.process(workbook);
}
}
@@ -109,10 +116,10 @@ public class ExcelToHtmlConverter extend
*
* @param xlsStream workbook stream to process
* @return DOM representation of result HTML
- * @throws IOException If an error occurs reading or writing files
+ * @throws IOException If an error occurs reading or writing files
* @throws ParserConfigurationException If configuration is incorrect
*/
- public static Document process( InputStream xlsStream ) throws IOException, ParserConfigurationException {
+ public static Document process(InputStream xlsStream) throws IOException, ParserConfigurationException {
try (HSSFWorkbook workbook = new HSSFWorkbook(xlsStream)) {
return ExcelToHtmlConverter.process(workbook);
}
@@ -123,13 +130,13 @@ public class ExcelToHtmlConverter extend
*
* @param workbook workbook instance to process
* @return DOM representation of result HTML
- * @throws IOException If an error occurs reading or writing files
+ * @throws IOException If an error occurs reading or writing files
* @throws ParserConfigurationException If configuration is incorrect
*/
- public static Document process( HSSFWorkbook workbook ) throws IOException, ParserConfigurationException {
+ public static Document process(HSSFWorkbook workbook) throws IOException, ParserConfigurationException {
ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(
- XMLHelper.newDocumentBuilder().newDocument() );
- excelToHtmlConverter.processWorkbook( workbook );
+ XMLHelper.newDocumentBuilder().newDocument());
+ excelToHtmlConverter.processWorkbook(workbook);
return excelToHtmlConverter.getDocument();
}
@@ -145,221 +152,215 @@ public class ExcelToHtmlConverter extend
private String cssClassPrefixTable = "t";
- private Map<Short, String> excelStyleToClass = new LinkedHashMap<>();
+ private final Map<Short, String> excelStyleToClass = new LinkedHashMap<>();
private final HtmlDocumentFacade htmlDocumentFacade;
private boolean useDivsToSpan;
- public ExcelToHtmlConverter( Document doc )
- {
- htmlDocumentFacade = new HtmlDocumentFacade( doc );
+ public ExcelToHtmlConverter(Document doc) {
+ htmlDocumentFacade = new HtmlDocumentFacade(doc);
}
- public ExcelToHtmlConverter( HtmlDocumentFacade htmlDocumentFacade ) {
+ public ExcelToHtmlConverter(HtmlDocumentFacade htmlDocumentFacade) {
this.htmlDocumentFacade = htmlDocumentFacade;
}
- protected String buildStyle( HSSFWorkbook workbook, HSSFCellStyle cellStyle ) {
+ protected String buildStyle(HSSFWorkbook workbook, HSSFCellStyle cellStyle) {
StringBuilder style = new StringBuilder();
- style.append( "white-space:pre-wrap;" );
- ExcelToHtmlUtils.appendAlign( style, cellStyle.getAlignment() );
+ style.append("white-space:pre-wrap;");
+ appendAlign(style, cellStyle.getAlignment());
switch (cellStyle.getFillPattern()) {
// no fill
- case NO_FILL: break;
+ case NO_FILL:
+ break;
case SOLID_FOREGROUND:
final HSSFColor foregroundColor = cellStyle.getFillForegroundColorColor();
- if ( foregroundColor == null ) break;
- String fgCol = AbstractExcelUtils.getColor( foregroundColor );
+ if (foregroundColor == null) {
+ break;
+ }
+ String fgCol = getColor(foregroundColor);
style.append("background-color:").append(fgCol).append(";");
break;
default:
final HSSFColor backgroundColor = cellStyle.getFillBackgroundColorColor();
- if ( backgroundColor == null ) break;
- String bgCol = AbstractExcelUtils.getColor( backgroundColor );
+ if (backgroundColor == null) {
+ break;
+ }
+ String bgCol = getColor(backgroundColor);
style.append("background-color:").append(bgCol).append(";");
break;
}
- buildStyle_border( workbook, style, "top", cellStyle.getBorderTop(),
- cellStyle.getTopBorderColor() );
- buildStyle_border( workbook, style, "right",
- cellStyle.getBorderRight(), cellStyle.getRightBorderColor() );
- buildStyle_border( workbook, style, "bottom",
- cellStyle.getBorderBottom(), cellStyle.getBottomBorderColor() );
- buildStyle_border( workbook, style, "left", cellStyle.getBorderLeft(),
- cellStyle.getLeftBorderColor() );
+ buildStyle_border(workbook, style, "top", cellStyle.getBorderTop(),
+ cellStyle.getTopBorderColor());
+ buildStyle_border(workbook, style, "right",
+ cellStyle.getBorderRight(), cellStyle.getRightBorderColor());
+ buildStyle_border(workbook, style, "bottom",
+ cellStyle.getBorderBottom(), cellStyle.getBottomBorderColor());
+ buildStyle_border(workbook, style, "left", cellStyle.getBorderLeft(),
+ cellStyle.getLeftBorderColor());
- HSSFFont font = cellStyle.getFont( workbook );
- buildStyle_font( workbook, style, font );
+ HSSFFont font = cellStyle.getFont(workbook);
+ buildStyle_font(workbook, style, font);
return style.toString();
}
- private void buildStyle_border( HSSFWorkbook workbook, StringBuilder style,
- String type, BorderStyle xlsBorder, short borderColor ) {
- if ( xlsBorder == BorderStyle.NONE ) {
+ private void buildStyle_border(HSSFWorkbook workbook, StringBuilder style,
+ String type, BorderStyle xlsBorder, short borderColor) {
+ if (xlsBorder == BorderStyle.NONE) {
return;
}
StringBuilder borderStyle = new StringBuilder();
- borderStyle.append( AbstractExcelUtils.getBorderWidth( xlsBorder ) );
- borderStyle.append( ' ' );
- borderStyle.append( AbstractExcelUtils.getBorderStyle( xlsBorder ) );
-
- final HSSFColor color = workbook.getCustomPalette().getColor(
- borderColor );
- if ( color != null )
- {
- borderStyle.append( ' ' );
- borderStyle.append( AbstractExcelUtils.getColor( color ) );
+ borderStyle.append(getBorderWidth(xlsBorder));
+ borderStyle.append(' ');
+ borderStyle.append(getBorderStyle(xlsBorder));
+
+ final HSSFColor color = workbook.getCustomPalette().getColor(borderColor);
+ if (color != null) {
+ borderStyle.append(' ');
+ borderStyle.append(getColor(color));
}
style.append("border-").append(type).append(":").append(borderStyle).append(";");
}
- void buildStyle_font( HSSFWorkbook workbook, StringBuilder style,
- HSSFFont font ) {
- if ( font.getBold() )
- {
- style.append( "font-weight:bold;" );
+ void buildStyle_font(HSSFWorkbook workbook, StringBuilder style,
+ HSSFFont font) {
+ if (font.getBold()) {
+ style.append("font-weight:bold;");
}
final HSSFColor fontColor = workbook.getCustomPalette().getColor(
- font.getColor() );
- if ( fontColor != null )
- style.append("color: ").append(AbstractExcelUtils.getColor(fontColor)).append("; ");
+ font.getColor());
+ if (fontColor != null) {
+ style.append("color: ").append(getColor(fontColor)).append("; ");
+ }
- if ( font.getFontHeightInPoints() != 0 )
+ if (font.getFontHeightInPoints() != 0) {
style.append("font-size:").append(font.getFontHeightInPoints()).append("pt;");
+ }
- if ( font.getItalic() )
- {
- style.append( "font-style:italic;" );
+ if (font.getItalic()) {
+ style.append("font-style:italic;");
}
}
- public String getCssClassPrefixCell()
- {
+ public String getCssClassPrefixCell() {
return cssClassPrefixCell;
}
- public String getCssClassPrefixDiv()
- {
+ public String getCssClassPrefixDiv() {
return cssClassPrefixDiv;
}
- public String getCssClassPrefixRow()
- {
+ public String getCssClassPrefixRow() {
return cssClassPrefixRow;
}
- public String getCssClassPrefixTable()
- {
+ public String getCssClassPrefixTable() {
return cssClassPrefixTable;
}
- public Document getDocument()
- {
+ public Document getDocument() {
return htmlDocumentFacade.getDocument();
}
- protected String getStyleClassName( HSSFWorkbook workbook,
- HSSFCellStyle cellStyle ) {
- final Short cellStyleKey = Short.valueOf( cellStyle.getIndex() );
+ protected String getStyleClassName(HSSFWorkbook workbook,
+ HSSFCellStyle cellStyle) {
+ final Short cellStyleKey = Short.valueOf(cellStyle.getIndex());
- String knownClass = excelStyleToClass.get( cellStyleKey );
- if ( knownClass != null )
+ String knownClass = excelStyleToClass.get(cellStyleKey);
+ if (knownClass != null) {
return knownClass;
+ }
- String cssStyle = buildStyle( workbook, cellStyle );
+ String cssStyle = buildStyle(workbook, cellStyle);
String cssClass = htmlDocumentFacade.getOrCreateCssClass(
- cssClassPrefixCell, cssStyle );
- excelStyleToClass.put( cellStyleKey, cssClass );
+ cssClassPrefixCell, cssStyle);
+ excelStyleToClass.put(cellStyleKey, cssClass);
return cssClass;
}
- public boolean isUseDivsToSpan()
- {
+ public boolean isUseDivsToSpan() {
return useDivsToSpan;
}
- protected boolean processCell( HSSFCell cell, Element tableCellElement,
- int normalWidthPx, int maxSpannedWidthPx, float normalHeightPt ) {
+ protected boolean processCell(HSSFCell cell, Element tableCellElement,
+ int normalWidthPx, int maxSpannedWidthPx, float normalHeightPt) {
final HSSFCellStyle cellStyle = cell.getCellStyle();
String value;
- switch ( cell.getCellType() ) {
- case STRING:
- // XXX: enrich
- value = cell.getRichStringCellValue().getString();
- break;
- case FORMULA:
- switch ( cell.getCachedFormulaResultType() ) {
+ switch (cell.getCellType()) {
case STRING:
- HSSFRichTextString str = cell.getRichStringCellValue();
- if ( str != null && str.length() > 0 )
- {
- value = ( str.toString() );
- }
- else
- {
- value = AbstractExcelUtils.EMPTY;
+ // XXX: enrich
+ value = cell.getRichStringCellValue().getString();
+ break;
+ case FORMULA:
+ switch (cell.getCachedFormulaResultType()) {
+ case STRING:
+ HSSFRichTextString str = cell.getRichStringCellValue();
+ if (str != null && str.length() > 0) {
+ value = (str.toString());
+ } else {
+ value = AbstractExcelUtils.EMPTY;
+ }
+ break;
+ case NUMERIC:
+ double nValue = cell.getNumericCellValue();
+ short df = cellStyle.getDataFormat();
+ String dfs = cellStyle.getDataFormatString();
+ value = _formatter.formatRawCellContents(nValue, df, dfs);
+ break;
+ case BOOLEAN:
+ value = String.valueOf(cell.getBooleanCellValue());
+ break;
+ case ERROR:
+ value = ErrorEval.getText(cell.getErrorCellValue());
+ break;
+ default:
+ LOG.atWarn().log("Unexpected cell cachedFormulaResultType ({})", cell.getCachedFormulaResultType());
+ value = AbstractExcelUtils.EMPTY;
+ break;
}
break;
+ case BLANK:
+ value = AbstractExcelUtils.EMPTY;
+ break;
case NUMERIC:
- double nValue = cell.getNumericCellValue();
- short df = cellStyle.getDataFormat();
- String dfs = cellStyle.getDataFormatString();
- value = _formatter.formatRawCellContents(nValue, df, dfs);
+ value = _formatter.formatCellValue(cell);
break;
case BOOLEAN:
- value = String.valueOf( cell.getBooleanCellValue() );
+ value = String.valueOf(cell.getBooleanCellValue());
break;
case ERROR:
- value = ErrorEval.getText( cell.getErrorCellValue() );
+ value = ErrorEval.getText(cell.getErrorCellValue());
break;
default:
- LOG.atWarn().log("Unexpected cell cachedFormulaResultType ({})", cell.getCachedFormulaResultType());
- value = AbstractExcelUtils.EMPTY;
- break;
- }
- break;
- case BLANK:
- value = AbstractExcelUtils.EMPTY;
- break;
- case NUMERIC:
- value = _formatter.formatCellValue( cell );
- break;
- case BOOLEAN:
- value = String.valueOf( cell.getBooleanCellValue() );
- break;
- case ERROR:
- value = ErrorEval.getText( cell.getErrorCellValue() );
- break;
- default:
- LOG.atWarn().log("Unexpected cell type ({})", cell.getCellType());
- return true;
+ LOG.atWarn().log("Unexpected cell type ({})", cell.getCellType());
+ return true;
}
- final boolean noText = AbstractExcelUtils.isEmpty( value );
+ final boolean noText = isEmpty(value);
final boolean wrapInDivs = !noText && isUseDivsToSpan() && !cellStyle.getWrapText();
- if ( cellStyle.getIndex() != 0 ) {
+ if (cellStyle.getIndex() != 0) {
@SuppressWarnings("resource")
HSSFWorkbook workbook = cell.getRow().getSheet().getWorkbook();
- String mainCssClass = getStyleClassName( workbook, cellStyle );
+ String mainCssClass = getStyleClassName(workbook, cellStyle);
- if ( wrapInDivs ) {
- tableCellElement.setAttribute( "class", mainCssClass + " "
- + cssClassContainerCell );
+ if (wrapInDivs) {
+ tableCellElement.setAttribute("class", mainCssClass + " "
+ + cssClassContainerCell);
} else {
- tableCellElement.setAttribute( "class", mainCssClass );
+ tableCellElement.setAttribute("class", mainCssClass);
}
- if ( noText ) {
+ if (noText) {
/*
* if cell style is defined (like borders, etc.) but cell text
* is empty, add " " to output, so browser won't collapse
@@ -369,216 +370,219 @@ public class ExcelToHtmlConverter extend
}
}
- if ( isOutputLeadingSpacesAsNonBreaking() && value.startsWith( " " ) ) {
+ if (isOutputLeadingSpacesAsNonBreaking() && value.startsWith(" ")) {
StringBuilder builder = new StringBuilder();
- for ( int c = 0; c < value.length(); c++ )
- {
- if ( value.charAt( c ) != ' ' )
+ for (int c = 0; c < value.length(); c++) {
+ if (value.charAt(c) != ' ') {
break;
- builder.append( '\u00a0' );
+ }
+ builder.append('\u00a0');
}
- if ( value.length() != builder.length() )
- builder.append( value.substring( builder.length() ) );
+ if (value.length() != builder.length()) {
+ builder.append(value.substring(builder.length()));
+ }
value = builder.toString();
}
- Text text = htmlDocumentFacade.createText( value );
+ Text text = htmlDocumentFacade.createText(value);
- if ( wrapInDivs ) {
+ if (wrapInDivs) {
Element outerDiv = htmlDocumentFacade.createBlock();
- outerDiv.setAttribute( "class", this.cssClassContainerDiv );
+ outerDiv.setAttribute("class", this.cssClassContainerDiv);
Element innerDiv = htmlDocumentFacade.createBlock();
StringBuilder innerDivStyle = new StringBuilder();
- innerDivStyle.append( "position:absolute;min-width:" );
- innerDivStyle.append( normalWidthPx );
- innerDivStyle.append( "px;" );
- if ( maxSpannedWidthPx != Integer.MAX_VALUE ) {
- innerDivStyle.append( "max-width:" );
- innerDivStyle.append( maxSpannedWidthPx );
- innerDivStyle.append( "px;" );
- }
- innerDivStyle.append( "overflow:hidden;max-height:" );
- innerDivStyle.append( normalHeightPt );
- innerDivStyle.append( "pt;white-space:nowrap;" );
- ExcelToHtmlUtils.appendAlign( innerDivStyle, cellStyle.getAlignment() );
- htmlDocumentFacade.addStyleClass( outerDiv, cssClassPrefixDiv,
- innerDivStyle.toString() );
-
- innerDiv.appendChild( text );
- outerDiv.appendChild( innerDiv );
- tableCellElement.appendChild( outerDiv );
+ innerDivStyle.append("position:absolute;min-width:");
+ innerDivStyle.append(normalWidthPx);
+ innerDivStyle.append("px;");
+ if (maxSpannedWidthPx != Integer.MAX_VALUE) {
+ innerDivStyle.append("max-width:");
+ innerDivStyle.append(maxSpannedWidthPx);
+ innerDivStyle.append("px;");
+ }
+ innerDivStyle.append("overflow:hidden;max-height:");
+ innerDivStyle.append(normalHeightPt);
+ innerDivStyle.append("pt;white-space:nowrap;");
+ appendAlign(innerDivStyle, cellStyle.getAlignment());
+ htmlDocumentFacade.addStyleClass(outerDiv, cssClassPrefixDiv,
+ innerDivStyle.toString());
+
+ innerDiv.appendChild(text);
+ outerDiv.appendChild(innerDiv);
+ tableCellElement.appendChild(outerDiv);
} else {
- tableCellElement.appendChild( text );
+ tableCellElement.appendChild(text);
}
- return AbstractExcelUtils.isEmpty( value ) && (cellStyle.getIndex() == 0);
+ return isEmpty(value) && (cellStyle.getIndex() == 0);
}
- protected void processColumnHeaders( HSSFSheet sheet, int maxSheetColumns,
- Element table ) {
+ protected void processColumnHeaders(HSSFSheet sheet, int maxSheetColumns,
+ Element table) {
Element tableHeader = htmlDocumentFacade.createTableHeader();
- table.appendChild( tableHeader );
+ table.appendChild(tableHeader);
Element tr = htmlDocumentFacade.createTableRow();
- if ( isOutputRowNumbers() ) {
+ if (isOutputRowNumbers()) {
// empty row at left-top corner
- tr.appendChild( htmlDocumentFacade.createTableHeaderCell() );
+ tr.appendChild(htmlDocumentFacade.createTableHeaderCell());
}
- for ( int c = 0; c < maxSheetColumns; c++ ) {
- if ( !isOutputHiddenColumns() && sheet.isColumnHidden( c ) )
+ for (int c = 0; c < maxSheetColumns; c++) {
+ if (!isOutputHiddenColumns() && sheet.isColumnHidden(c)) {
continue;
+ }
Element th = htmlDocumentFacade.createTableHeaderCell();
- String text = getColumnName( c );
- th.appendChild( htmlDocumentFacade.createText( text ) );
- tr.appendChild( th );
+ String text = getColumnName(c);
+ th.appendChild(htmlDocumentFacade.createText(text));
+ tr.appendChild(th);
}
- tableHeader.appendChild( tr );
+ tableHeader.appendChild(tr);
}
/**
* Creates COLGROUP element with width specified for all columns. (Except
* first if <tt>{@link #isOutputRowNumbers()}==true</tt>)
*/
- protected void processColumnWidths( HSSFSheet sheet, int maxSheetColumns,
- Element table ) {
+ protected void processColumnWidths(HSSFSheet sheet, int maxSheetColumns,
+ Element table) {
// draw COLS after we know max column number
Element columnGroup = htmlDocumentFacade.createTableColumnGroup();
- if ( isOutputRowNumbers() )
- {
- columnGroup.appendChild( htmlDocumentFacade.createTableColumn() );
- }
- for ( int c = 0; c < maxSheetColumns; c++ )
- {
- if ( !isOutputHiddenColumns() && sheet.isColumnHidden( c ) )
+ if (isOutputRowNumbers()) {
+ columnGroup.appendChild(htmlDocumentFacade.createTableColumn());
+ }
+ for (int c = 0; c < maxSheetColumns; c++) {
+ if (!isOutputHiddenColumns() && sheet.isColumnHidden(c)) {
continue;
+ }
Element col = htmlDocumentFacade.createTableColumn();
- col.setAttribute( "width",
- String.valueOf( getColumnWidth( sheet, c ) ) );
- columnGroup.appendChild( col );
+ col.setAttribute("width",
+ String.valueOf(getColumnWidth(sheet, c)));
+ columnGroup.appendChild(col);
}
- table.appendChild( columnGroup );
+ table.appendChild(columnGroup);
}
- protected void processDocumentInformation(SummaryInformation summaryInformation ) {
- if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getTitle() ) )
- htmlDocumentFacade.setTitle( summaryInformation.getTitle() );
+ protected void processDocumentInformation(SummaryInformation summaryInformation) {
+ if (isNotEmpty(summaryInformation.getTitle())) {
+ htmlDocumentFacade.setTitle(summaryInformation.getTitle());
+ }
- if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getAuthor() ) )
- htmlDocumentFacade.addAuthor( summaryInformation.getAuthor() );
+ if (isNotEmpty(summaryInformation.getAuthor())) {
+ htmlDocumentFacade.addAuthor(summaryInformation.getAuthor());
+ }
- if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getKeywords() ) )
- htmlDocumentFacade.addKeywords( summaryInformation.getKeywords() );
+ if (isNotEmpty(summaryInformation.getKeywords())) {
+ htmlDocumentFacade.addKeywords(summaryInformation.getKeywords());
+ }
- if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getComments() ) )
+ if (isNotEmpty(summaryInformation.getComments())) {
htmlDocumentFacade
- .addDescription( summaryInformation.getComments() );
+ .addDescription(summaryInformation.getComments());
+ }
}
/**
* @return maximum 1-base index of column that were rendered, zero if none
*/
- protected int processRow( CellRangeAddress[][] mergedRanges, HSSFRow row,
- Element tableRowElement ) {
+ protected int processRow(CellRangeAddress[][] mergedRanges, HSSFRow row,
+ Element tableRowElement) {
final HSSFSheet sheet = row.getSheet();
final short maxColIx = row.getLastCellNum();
- if ( maxColIx <= 0 )
+ if (maxColIx <= 0) {
return 0;
+ }
final List<Element> emptyCells = new ArrayList<>(maxColIx);
- if ( isOutputRowNumbers() )
- {
+ if (isOutputRowNumbers()) {
Element tableRowNumberCellElement = htmlDocumentFacade
- .createTableHeaderCell();
- processRowNumber( row, tableRowNumberCellElement );
- emptyCells.add( tableRowNumberCellElement );
+ .createTableHeaderCell();
+ processRowNumber(row, tableRowNumberCellElement);
+ emptyCells.add(tableRowNumberCellElement);
}
int maxRenderedColumn = 0;
- for ( int colIx = 0; colIx < maxColIx; colIx++ )
- {
- if ( !isOutputHiddenColumns() && sheet.isColumnHidden( colIx ) )
+ for (int colIx = 0; colIx < maxColIx; colIx++) {
+ if (!isOutputHiddenColumns() && sheet.isColumnHidden(colIx)) {
continue;
+ }
- CellRangeAddress range = AbstractExcelUtils.getMergedRange(
- mergedRanges, row.getRowNum(), colIx );
+ CellRangeAddress range = getMergedRange(mergedRanges, row.getRowNum(), colIx);
- if ( range != null
- && ( range.getFirstColumn() != colIx || range.getFirstRow() != row
- .getRowNum() ) )
+ if (range != null
+ && (range.getFirstColumn() != colIx || range.getFirstRow() != row
+ .getRowNum())) {
continue;
+ }
- HSSFCell cell = row.getCell( colIx );
+ HSSFCell cell = row.getCell(colIx);
int divWidthPx = 0;
- if ( isUseDivsToSpan() )
- {
- divWidthPx = getColumnWidth( sheet, colIx );
+ if (isUseDivsToSpan()) {
+ divWidthPx = getColumnWidth(sheet, colIx);
boolean hasBreaks = false;
- for ( int nextColumnIndex = colIx + 1; nextColumnIndex < maxColIx; nextColumnIndex++ )
- {
- if ( !isOutputHiddenColumns()
- && sheet.isColumnHidden( nextColumnIndex ) )
+ for (int nextColumnIndex = colIx + 1; nextColumnIndex < maxColIx; nextColumnIndex++) {
+ if (!isOutputHiddenColumns()
+ && sheet.isColumnHidden(nextColumnIndex)) {
continue;
+ }
- if ( row.getCell( nextColumnIndex ) != null
- && !isTextEmpty( row.getCell( nextColumnIndex ) ) )
- {
+ if (row.getCell(nextColumnIndex) != null
+ && !isTextEmpty(row.getCell(nextColumnIndex))) {
hasBreaks = true;
break;
}
- divWidthPx += getColumnWidth( sheet, nextColumnIndex );
+ divWidthPx += getColumnWidth(sheet, nextColumnIndex);
}
- if ( !hasBreaks )
+ if (!hasBreaks) {
divWidthPx = Integer.MAX_VALUE;
+ }
}
Element tableCellElement = htmlDocumentFacade.createTableCell();
- if ( range != null )
- {
- if ( range.getFirstColumn() != range.getLastColumn() )
+ if (range != null) {
+ if (range.getFirstColumn() != range.getLastColumn()) {
tableCellElement.setAttribute(
- "colspan",
- String.valueOf( range.getLastColumn()
- - range.getFirstColumn() + 1 ) );
- if ( range.getFirstRow() != range.getLastRow() )
+ "colspan",
+ String.valueOf(range.getLastColumn()
+ - range.getFirstColumn() + 1));
+ }
+ if (range.getFirstRow() != range.getLastRow()) {
tableCellElement.setAttribute(
- "rowspan",
- String.valueOf( range.getLastRow()
- - range.getFirstRow() + 1 ) );
+ "rowspan",
+ String.valueOf(range.getLastRow()
+ - range.getFirstRow() + 1));
+ }
}
boolean emptyCell;
- if ( cell != null )
- {
- emptyCell = processCell( cell, tableCellElement,
- getColumnWidth( sheet, colIx ), divWidthPx,
- row.getHeight() / 20f );
+ if (cell != null) {
+ emptyCell = processCell(cell, tableCellElement,
+ getColumnWidth(sheet, colIx), divWidthPx,
+ row.getHeight() / 20f);
} else {
emptyCell = true;
}
- if ( emptyCell ) {
- emptyCells.add( tableCellElement );
+ if (emptyCell) {
+ emptyCells.add(tableCellElement);
} else {
- for ( Element emptyCellElement : emptyCells )
- {
- tableRowElement.appendChild( emptyCellElement );
+ for (Element emptyCellElement : emptyCells) {
+ tableRowElement.appendChild(emptyCellElement);
}
emptyCells.clear();
- tableRowElement.appendChild( tableCellElement );
+ tableRowElement.appendChild(tableCellElement);
maxRenderedColumn = colIx;
}
}
@@ -586,122 +590,120 @@ public class ExcelToHtmlConverter extend
return maxRenderedColumn + 1;
}
- protected void processRowNumber( HSSFRow row,
- Element tableRowNumberCellElement ) {
- tableRowNumberCellElement.setAttribute( "class", "rownumber" );
- Text text = htmlDocumentFacade.createText( getRowName( row ) );
- tableRowNumberCellElement.appendChild( text );
+ protected void processRowNumber(HSSFRow row,
+ Element tableRowNumberCellElement) {
+ tableRowNumberCellElement.setAttribute("class", "rownumber");
+ Text text = htmlDocumentFacade.createText(getRowName(row));
+ tableRowNumberCellElement.appendChild(text);
}
- protected void processSheet( HSSFSheet sheet ) {
- processSheetHeader( htmlDocumentFacade.getBody(), sheet );
+ protected void processSheet(HSSFSheet sheet) {
+ processSheetHeader(htmlDocumentFacade.getBody(), sheet);
final int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
- if ( physicalNumberOfRows <= 0 )
+ if (physicalNumberOfRows <= 0) {
return;
+ }
Element table = htmlDocumentFacade.createTable();
- htmlDocumentFacade.addStyleClass( table, cssClassPrefixTable,
- "border-collapse:collapse;border-spacing:0;" );
+ htmlDocumentFacade.addStyleClass(table, cssClassPrefixTable,
+ "border-collapse:collapse;border-spacing:0;");
Element tableBody = htmlDocumentFacade.createTableBody();
- final CellRangeAddress[][] mergedRanges = ExcelToHtmlUtils
- .buildMergedRangesMap( sheet );
+ final CellRangeAddress[][] mergedRanges = buildMergedRangesMap(sheet);
final List<Element> emptyRowElements = new ArrayList<>(
- physicalNumberOfRows);
+ physicalNumberOfRows);
int maxSheetColumns = 1;
- for ( int r = sheet.getFirstRowNum(); r <= sheet.getLastRowNum(); r++ ) {
- HSSFRow row = sheet.getRow( r );
+ for (int r = sheet.getFirstRowNum(); r <= sheet.getLastRowNum(); r++) {
+ HSSFRow row = sheet.getRow(r);
- if ( row == null )
+ if (row == null) {
continue;
+ }
- if ( !isOutputHiddenRows() && row.getZeroHeight() )
+ if (!isOutputHiddenRows() && row.getZeroHeight()) {
continue;
+ }
Element tableRowElement = htmlDocumentFacade.createTableRow();
- htmlDocumentFacade.addStyleClass( tableRowElement,
- cssClassPrefixRow, "height:" + ( row.getHeight() / 20f )
- + "pt;" );
+ htmlDocumentFacade.addStyleClass(tableRowElement,
+ cssClassPrefixRow, "height:" + (row.getHeight() / 20f)
+ + "pt;");
- int maxRowColumnNumber = processRow( mergedRanges, row,
- tableRowElement );
+ int maxRowColumnNumber = processRow(mergedRanges, row,
+ tableRowElement);
- if ( maxRowColumnNumber == 0 ) {
- emptyRowElements.add( tableRowElement );
+ if (maxRowColumnNumber == 0) {
+ emptyRowElements.add(tableRowElement);
} else {
- if ( !emptyRowElements.isEmpty() ) {
- for ( Element emptyRowElement : emptyRowElements ) {
- tableBody.appendChild( emptyRowElement );
+ if (!emptyRowElements.isEmpty()) {
+ for (Element emptyRowElement : emptyRowElements) {
+ tableBody.appendChild(emptyRowElement);
}
emptyRowElements.clear();
}
- tableBody.appendChild( tableRowElement );
+ tableBody.appendChild(tableRowElement);
}
- maxSheetColumns = Math.max( maxSheetColumns, maxRowColumnNumber );
+ maxSheetColumns = Math.max(maxSheetColumns, maxRowColumnNumber);
}
- processColumnWidths( sheet, maxSheetColumns, table );
+ processColumnWidths(sheet, maxSheetColumns, table);
- if ( isOutputColumnHeaders() ) {
- processColumnHeaders( sheet, maxSheetColumns, table );
+ if (isOutputColumnHeaders()) {
+ processColumnHeaders(sheet, maxSheetColumns, table);
}
- table.appendChild( tableBody );
+ table.appendChild(tableBody);
- htmlDocumentFacade.getBody().appendChild( table );
+ htmlDocumentFacade.getBody().appendChild(table);
}
- protected void processSheetHeader( Element htmlBody, HSSFSheet sheet ) {
+ protected void processSheetHeader(Element htmlBody, HSSFSheet sheet) {
Element h2 = htmlDocumentFacade.createHeader2();
- h2.appendChild( htmlDocumentFacade.createText( sheet.getSheetName() ) );
- htmlBody.appendChild( h2 );
+ h2.appendChild(htmlDocumentFacade.createText(sheet.getSheetName()));
+ htmlBody.appendChild(h2);
}
- public void processWorkbook( HSSFWorkbook workbook ) {
+ public void processWorkbook(HSSFWorkbook workbook) {
final SummaryInformation summaryInformation = workbook
- .getSummaryInformation();
- if ( summaryInformation != null ) {
- processDocumentInformation( summaryInformation );
+ .getSummaryInformation();
+ if (summaryInformation != null) {
+ processDocumentInformation(summaryInformation);
}
- if ( isUseDivsToSpan() ) {
+ if (isUseDivsToSpan()) {
// prepare CSS classes for later usage
this.cssClassContainerCell = htmlDocumentFacade
- .getOrCreateCssClass( cssClassPrefixCell,
- "padding:0;margin:0;align:left;vertical-align:top;" );
+ .getOrCreateCssClass(cssClassPrefixCell,
+ "padding:0;margin:0;align:left;vertical-align:top;");
this.cssClassContainerDiv = htmlDocumentFacade.getOrCreateCssClass(
- cssClassPrefixDiv, "position:relative;" );
+ cssClassPrefixDiv, "position:relative;");
}
- for ( int s = 0; s < workbook.getNumberOfSheets(); s++ ) {
- HSSFSheet sheet = workbook.getSheetAt( s );
- processSheet( sheet );
+ for (int s = 0; s < workbook.getNumberOfSheets(); s++) {
+ HSSFSheet sheet = workbook.getSheetAt(s);
+ processSheet(sheet);
}
htmlDocumentFacade.updateStylesheet();
}
- public void setCssClassPrefixCell( String cssClassPrefixCell )
- {
+ public void setCssClassPrefixCell(String cssClassPrefixCell) {
this.cssClassPrefixCell = cssClassPrefixCell;
}
- public void setCssClassPrefixDiv( String cssClassPrefixDiv )
- {
+ public void setCssClassPrefixDiv(String cssClassPrefixDiv) {
this.cssClassPrefixDiv = cssClassPrefixDiv;
}
- public void setCssClassPrefixRow( String cssClassPrefixRow )
- {
+ public void setCssClassPrefixRow(String cssClassPrefixRow) {
this.cssClassPrefixRow = cssClassPrefixRow;
}
- public void setCssClassPrefixTable( String cssClassPrefixTable )
- {
+ public void setCssClassPrefixTable(String cssClassPrefixTable) {
this.cssClassPrefixTable = cssClassPrefixTable;
}
@@ -713,8 +715,7 @@ public class ExcelToHtmlConverter extend
* with INDENT=YES option, because line breaks will make additional
* (unwanted) changes
*/
- public void setUseDivsToSpan( boolean useDivsToSpan )
- {
+ public void setUseDivsToSpan(boolean useDivsToSpan) {
this.useDivsToSpan = useDivsToSpan;
}
}
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfBitmapDib.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfBitmapDib.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfBitmapDib.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfBitmapDib.java Tue Apr 13 21:37:33 2021
@@ -58,7 +58,7 @@ public class HwmfBitmapDib implements Ge
public enum BitCount {
/**
- * The image SHOULD be in either JPEG or PNG format. <6> Neither of these formats includes
+ * The image SHOULD be in either JPEG or PNG format. Neither of these formats includes
* a color table, so this value specifies that no color table is present. See [JFIF] and [RFC2083]
* for more information concerning JPEG and PNG compression formats.
*/
@@ -257,7 +257,7 @@ public class HwmfBitmapDib implements Ge
headerCompression == Compression.BI_RGB ||
headerCompression == Compression.BI_BITFIELDS ||
headerCompression == Compression.BI_CMYK) {
- int fileSize = (int)Math.min(introSize+bodySize,recordSize);
+ int fileSize = Math.min(introSize+bodySize,recordSize);
imageData = IOUtils.safelyAllocate(fileSize, MAX_RECORD_LENGTH);
leis.readFully(imageData, 0, introSize);
leis.skipFully(recordSize-fileSize);
@@ -271,10 +271,10 @@ public class HwmfBitmapDib implements Ge
}
}
- protected int readHeader(LittleEndianInputStream leis) throws IOException {
+ protected int readHeader(LittleEndianInputStream leis) {
int size = 0;
- /**
+ /*
* DIBHeaderInfo (variable): Either a BitmapCoreHeader Object or a
* BitmapInfoHeader Object that specifies information about the image.
*
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java Tue Apr 13 21:37:33 2021
@@ -205,7 +205,7 @@ public final class WordExtractor impleme
/**
* Grab the text out of the text pieces. Might also include various bits of
- * crud, but will work in cases where the text piece -> paragraph mapping is
+ * crud, but will work in cases where the text piece -> paragraph mapping is
* broken. Fast too.
*/
public String getTextFromPieces() {
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/CharIndexTranslator.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/CharIndexTranslator.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/CharIndexTranslator.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/CharIndexTranslator.java Tue Apr 13 21:37:33 2021
@@ -23,7 +23,7 @@ import org.apache.poi.util.Internal;
public interface CharIndexTranslator {
/**
* Calculates the byte index of the given char index.
- *
+ *
* @param charPos
* The char position
* @return The byte index
@@ -32,7 +32,7 @@ public interface CharIndexTranslator {
/**
* Finds character ranges that includes specified byte range.
- *
+ *
* @param startBytePosInclusive
* start byte range
* @param endBytePosExclusive
@@ -43,14 +43,14 @@ public interface CharIndexTranslator {
/**
* Check if index is in table
- *
+ *
* @param bytePos
* @return true if index in table, false if not
*/
boolean isIndexInTable(int bytePos);
/**
- * Return first index >= bytePos that is in table
+ * Return first index >= bytePos that is in table
*
* @param bytePos
* @return first index greater or equal to bytePos that is in table
@@ -58,7 +58,7 @@ public interface CharIndexTranslator {
int lookIndexForward(int bytePos);
/**
- * Return last index <= bytePos that is in table
+ * Return last index <= bytePos that is in table
*
* @param bytePos
* @return last index less of equal to bytePos that is in table
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/ListTables.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/ListTables.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/ListTables.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/ListTables.java Tue Apr 13 21:37:33 2021
@@ -137,7 +137,7 @@ public final class ListTables
/**
* Get the ListLevel for a given lsid and level
- * @return ListLevel if found, or <code>null</code> if ListData can't be found or if level is > that available
+ * @return ListLevel if found, or {@code null} if ListData can't be found or if level is > that available
*/
public ListLevel getLevel(int lsid, int level)
{
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/PicturesTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/PicturesTable.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/PicturesTable.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/PicturesTable.java Tue Apr 13 21:37:33 2021
@@ -17,6 +17,8 @@
package org.apache.poi.hwpf.model;
+import static org.apache.logging.log4j.util.Unbox.box;
+
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
@@ -36,13 +38,11 @@ import org.apache.poi.hwpf.usermodel.Ran
import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
-import static org.apache.logging.log4j.util.Unbox.box;
-
/**
- * Holds information about all pictures embedded in Word Document either via "Insert -> Picture -> From File" or via
+ * Holds information about all pictures embedded in Word Document either via "Insert -> Picture -> From File" or via
* clipboard. Responsible for images extraction and determining whether some document's piece contains embedded image.
* Analyzes raw data bytestream 'Data' (where Word stores all embedded objects) provided by HWPFDocument.
- *
+ * <p>
* Word stores images as is within so called "Data stream" - the stream within a Word docfile containing various data
* that hang off of characters in the main stream. For example, binary data describing in-line pictures and/or
* formfields an also embedded objects-native data. Word picture structures are concatenated one after the other in
@@ -60,194 +60,171 @@ public final class PicturesTable {
private static final Logger LOG = LogManager.getLogger(PicturesTable.class);
static final int TYPE_IMAGE = 0x08;
- static final int TYPE_IMAGE_WORD2000 = 0x00;
- static final int TYPE_IMAGE_PASTED_FROM_CLIPBOARD = 0xA;
- static final int TYPE_IMAGE_PASTED_FROM_CLIPBOARD_WORD2000 = 0x2;
- static final int TYPE_HORIZONTAL_LINE = 0xE;
- static final int BLOCK_TYPE_OFFSET = 0xE;
- static final int MM_MODE_TYPE_OFFSET = 0x6;
-
- private HWPFDocument _document;
- private byte[] _dataStream;
- private byte[] _mainStream;
- @Deprecated
- private FSPATable _fspa;
- @Deprecated
- private OfficeArtContent _dgg;
-
- /** @link dependency
- * @stereotype instantiate*/
- /*# Picture lnkPicture; */
-
- /**
- *
- * @param _document
- * @param _dataStream
- */
- @Deprecated
- public PicturesTable(HWPFDocument _document, byte[] _dataStream, byte[] _mainStream, FSPATable fspa, OfficeArtContent dgg)
- {
- this._document = _document;
- this._dataStream = _dataStream;
- this._mainStream = _mainStream;
- this._fspa = fspa;
- this._dgg = dgg;
- }
-
- public PicturesTable( HWPFDocument _document, byte[] _dataStream,
- byte[] _mainStream )
- {
+ static final int TYPE_IMAGE_WORD2000 = 0x00;
+ static final int TYPE_IMAGE_PASTED_FROM_CLIPBOARD = 0xA;
+ static final int TYPE_IMAGE_PASTED_FROM_CLIPBOARD_WORD2000 = 0x2;
+ static final int TYPE_HORIZONTAL_LINE = 0xE;
+ static final int BLOCK_TYPE_OFFSET = 0xE;
+ static final int MM_MODE_TYPE_OFFSET = 0x6;
+
+ private final HWPFDocument _document;
+ private final byte[] _dataStream;
+ private final byte[] _mainStream;
+ @Deprecated
+ private FSPATable _fspa;
+ @Deprecated
+ private OfficeArtContent _dgg;
+
+ @Deprecated
+ public PicturesTable(HWPFDocument _document, byte[] _dataStream, byte[] _mainStream, FSPATable fspa, OfficeArtContent dgg) {
this._document = _document;
this._dataStream = _dataStream;
this._mainStream = _mainStream;
+ this._fspa = fspa;
+ this._dgg = dgg;
}
- /**
- * determines whether specified CharacterRun contains reference to a picture
- * @param run
- */
- public boolean hasPicture(CharacterRun run) {
- if (run==null) {
+ public PicturesTable(HWPFDocument _document, byte[] _dataStream,
+ byte[] _mainStream) {
+ this._document = _document;
+ this._dataStream = _dataStream;
+ this._mainStream = _mainStream;
+ }
+
+ /**
+ * determines whether specified CharacterRun contains reference to a picture
+ */
+ public boolean hasPicture(CharacterRun run) {
+ if (run == null) {
+ return false;
+ }
+
+ if (run.isSpecialCharacter() && !run.isObj() && !run.isOle2() && !run.isData()) {
+ // Image should be in it's own run, or in a run with the end-of-special marker
+ if ("\u0001".equals(run.text()) || "\u0001\u0015".equals(run.text())) {
+ return isBlockContainsImage(run.getPicOffset());
+ }
+ }
return false;
}
- if (run.isSpecialCharacter() && !run.isObj() && !run.isOle2() && !run.isData()) {
- // Image should be in it's own run, or in a run with the end-of-special marker
- if("\u0001".equals(run.text()) || "\u0001\u0015".equals(run.text())) {
- return isBlockContainsImage(run.getPicOffset());
- }
- }
- return false;
- }
-
- public boolean hasEscherPicture(CharacterRun run) {
- if (run.isSpecialCharacter() && !run.isObj() && !run.isOle2() && !run.isData() && run.text().startsWith("\u0008")) {
- return true;
- }
- return false;
- }
-
- /**
- * determines whether specified CharacterRun contains reference to a picture
- * @param run
- */
- public boolean hasHorizontalLine(CharacterRun run) {
- if (run.isSpecialCharacter() && "\u0001".equals(run.text())) {
- return isBlockContainsHorizontalLine(run.getPicOffset());
- }
- return false;
- }
-
- private boolean isPictureRecognized(short blockType, short mappingModeOfMETAFILEPICT) {
- return (blockType == TYPE_IMAGE || blockType == TYPE_IMAGE_PASTED_FROM_CLIPBOARD || (blockType==TYPE_IMAGE_WORD2000 && mappingModeOfMETAFILEPICT==0x64) || (blockType==TYPE_IMAGE_PASTED_FROM_CLIPBOARD_WORD2000 && mappingModeOfMETAFILEPICT==0x64));
- }
-
- private static short getBlockType(byte[] dataStream, int pictOffset) {
- return LittleEndian.getShort(dataStream, pictOffset + BLOCK_TYPE_OFFSET);
- }
-
- private static short getMmMode(byte[] dataStream, int pictOffset) {
- return LittleEndian.getShort(dataStream, pictOffset + MM_MODE_TYPE_OFFSET);
- }
-
- /**
- * Returns picture object tied to specified CharacterRun
- * @param run
- * @param fillBytes if true, Picture will be returned with filled byte array that represent picture's contents. If you don't want
- * to have that byte array in memory but only write picture's contents to stream, pass false and then use Picture.writeImageContent
- * @see Picture#writeImageContent(OutputStream)
- * @return a Picture object if picture exists for specified CharacterRun, null otherwise. PicturesTable.hasPicture is used to determine this.
- * @see #hasPicture(CharacterRun)
- */
- public Picture extractPicture(CharacterRun run, boolean fillBytes) {
- if (hasPicture(run)) {
- return new Picture(run.getPicOffset(), _dataStream, fillBytes);
+ public boolean hasEscherPicture(CharacterRun run) {
+ return run.isSpecialCharacter() && !run.isObj() && !run.isOle2() && !run.isData() && run.text().startsWith("\u0008");
}
- return null;
- }
- /**
+ /**
+ * determines whether specified CharacterRun contains reference to a picture
+ */
+ public boolean hasHorizontalLine(CharacterRun run) {
+ if (run.isSpecialCharacter() && "\u0001".equals(run.text())) {
+ return isBlockContainsHorizontalLine(run.getPicOffset());
+ }
+ return false;
+ }
+
+ private boolean isPictureRecognized(short blockType, short mappingModeOfMETAFILEPICT) {
+ return blockType == TYPE_IMAGE
+ || blockType == TYPE_IMAGE_PASTED_FROM_CLIPBOARD
+ || blockType == TYPE_IMAGE_WORD2000 && mappingModeOfMETAFILEPICT == 0x64
+ || blockType == TYPE_IMAGE_PASTED_FROM_CLIPBOARD_WORD2000 && mappingModeOfMETAFILEPICT == 0x64;
+ }
+
+ private static short getBlockType(byte[] dataStream, int pictOffset) {
+ return LittleEndian.getShort(dataStream, pictOffset + BLOCK_TYPE_OFFSET);
+ }
+
+ private static short getMmMode(byte[] dataStream, int pictOffset) {
+ return LittleEndian.getShort(dataStream, pictOffset + MM_MODE_TYPE_OFFSET);
+ }
+
+ /**
+ * Returns picture object tied to specified CharacterRun
+ *
+ * @param fillBytes if true, Picture will be returned with filled byte array that represent picture's contents. If you don't want
+ * to have that byte array in memory but only write picture's contents to stream, pass false and then use Picture.writeImageContent
+ * @return a Picture object if picture exists for specified CharacterRun, null otherwise. PicturesTable.hasPicture is used to determine this.
+ * @see Picture#writeImageContent(OutputStream)
+ * @see #hasPicture(CharacterRun)
+ */
+ public Picture extractPicture(CharacterRun run, boolean fillBytes) {
+ if (hasPicture(run)) {
+ return new Picture(run.getPicOffset(), _dataStream, fillBytes);
+ }
+ return null;
+ }
+
+ /**
* Performs a search for pictures in the given list of escher records.
*
* @param escherRecords the escher records.
- * @param pictures the list to populate with the pictures.
+ * @param pictures the list to populate with the pictures.
*/
- private void searchForPictures(List<EscherRecord> escherRecords, List<Picture> pictures)
- {
- for(EscherRecord escherRecord : escherRecords) {
- if (escherRecord instanceof EscherBSERecord) {
- EscherBSERecord bse = (EscherBSERecord) escherRecord;
- EscherBlipRecord blip = bse.getBlipRecord();
- if (blip != null)
- {
- pictures.add(new Picture(blip));
- }
- else if ( bse.getOffset() > 0 )
- {
- try
- {
+ private void searchForPictures(List<EscherRecord> escherRecords, List<Picture> pictures) {
+ for (EscherRecord escherRecord : escherRecords) {
+ if (escherRecord instanceof EscherBSERecord) {
+ EscherBSERecord bse = (EscherBSERecord) escherRecord;
+ EscherBlipRecord blip = bse.getBlipRecord();
+ if (blip != null) {
+ pictures.add(new Picture(blip));
+ } else if (bse.getOffset() > 0) {
+ try {
// Blip stored in delay stream, which in a word doc, is
// the main stream
EscherRecordFactory recordFactory = new DefaultEscherRecordFactory();
EscherRecord record = recordFactory.createRecord(
- _mainStream, bse.getOffset() );
+ _mainStream, bse.getOffset());
- if ( record instanceof EscherBlipRecord )
- {
- record.fillFields( _mainStream, bse.getOffset(),
- recordFactory );
+ if (record instanceof EscherBlipRecord) {
+ record.fillFields(_mainStream, bse.getOffset(),
+ recordFactory);
blip = (EscherBlipRecord) record;
- pictures.add( new Picture( blip ) );
+ pictures.add(new Picture(blip));
}
- }
- catch ( Exception exc )
- {
+ } catch (Exception exc) {
LOG.atWarn().withThrowable(exc).log("Unable to load picture from BLIP record at offset #{}", box(bse.getOffset()));
}
}
- }
- }
+ }
+ }
+ }
+
+ /**
+ * Not all documents have all the images concatenated in the data stream
+ * although MS claims so. The best approach is to scan all character runs.
+ *
+ * @return a list of Picture objects found in current document
+ */
+ public List<Picture> getAllPictures() {
+ ArrayList<Picture> pictures = new ArrayList<>();
+
+ Range range = _document.getOverallRange();
+ for (int i = 0; i < range.numCharacterRuns(); i++) {
+ CharacterRun run = range.getCharacterRun(i);
+
+ if (run == null) {
+ continue;
+ }
+
+ Picture picture = extractPicture(run, false);
+ if (picture != null) {
+ pictures.add(picture);
+ }
+ }
+
+ EscherContainerRecord bStore = _dgg.getBStoreContainer();
+ if (bStore != null) {
+ searchForPictures(bStore.getChildRecords(), pictures);
+ }
+
+ return pictures;
}
- /**
- * Not all documents have all the images concatenated in the data stream
- * although MS claims so. The best approach is to scan all character runs.
- *
- * @return a list of Picture objects found in current document
- */
- public List<Picture> getAllPictures() {
- ArrayList<Picture> pictures = new ArrayList<>();
-
- Range range = _document.getOverallRange();
- for (int i = 0; i < range.numCharacterRuns(); i++) {
- CharacterRun run = range.getCharacterRun(i);
-
- if (run==null) {
- continue;
- }
-
- Picture picture = extractPicture(run, false);
- if (picture != null) {
- pictures.add(picture);
- }
- }
-
- EscherContainerRecord bStore = _dgg.getBStoreContainer();
- if (bStore != null) {
- searchForPictures(bStore.getChildRecords(), pictures);
- }
-
- return pictures;
- }
-
- private boolean isBlockContainsImage(int i)
- {
- return isPictureRecognized(getBlockType(_dataStream, i), getMmMode(_dataStream, i));
- }
-
- private boolean isBlockContainsHorizontalLine(int i)
- {
- return getBlockType(_dataStream, i)==TYPE_HORIZONTAL_LINE && getMmMode(_dataStream, i)==0x64;
- }
+ private boolean isBlockContainsImage(int i) {
+ return isPictureRecognized(getBlockType(_dataStream, i), getMmMode(_dataStream, i));
+ }
+
+ private boolean isBlockContainsHorizontalLine(int i) {
+ return getBlockType(_dataStream, i) == TYPE_HORIZONTAL_LINE && getMmMode(_dataStream, i) == 0x64;
+ }
}
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/FRDAbstractType.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/FRDAbstractType.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/FRDAbstractType.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/FRDAbstractType.java Tue Apr 13 21:37:33 2021
@@ -56,17 +56,13 @@ public abstract class FRDAbstractType {
public String toString()
{
- StringBuilder builder = new StringBuilder();
- builder.append( "[FRD]\n" );
- builder.append( " .nAuto = " );
- builder.append( " (" ).append( getNAuto() ).append( " )\n" );
-
- builder.append( "[/FRD]\n" );
- return builder.toString();
+ return "[FRD]\n" +
+ " .nAuto = (" + getNAuto() + " )\n" +
+ "[/FRD]\n";
}
/**
- * If > 0, the note is an automatically numbered note, otherwise it has a
+ * If > 0, the note is an automatically numbered note, otherwise it has a
* custom mark.
*/
public short getNAuto()
@@ -75,7 +71,7 @@ public abstract class FRDAbstractType {
}
/**
- * If > 0, the note is an automatically numbered note, otherwise it has a
+ * If > 0, the note is an automatically numbered note, otherwise it has a
* custom mark.
*/
public void setNAuto( short field_1_nAuto )
@@ -83,4 +79,4 @@ public abstract class FRDAbstractType {
this.field_1_nAuto = field_1_nAuto;
}
-} // END OF CLASS
+}
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/GrfhicAbstractType.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/GrfhicAbstractType.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/GrfhicAbstractType.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/GrfhicAbstractType.java Tue Apr 13 21:37:33 2021
@@ -81,7 +81,7 @@ public abstract class GrfhicAbstractType
*/
public static int getSize()
{
- return 0 + 1;
+ return 1;
}
@Override
@@ -94,9 +94,7 @@ public abstract class GrfhicAbstractType
if ( getClass() != obj.getClass() )
return false;
GrfhicAbstractType other = (GrfhicAbstractType) obj;
- if ( field_1_grfhic != other.field_1_grfhic )
- return false;
- return true;
+ return field_1_grfhic == other.field_1_grfhic;
}
@Override
@@ -106,22 +104,19 @@ public abstract class GrfhicAbstractType
public String toString()
{
- StringBuilder builder = new StringBuilder();
-
- builder.append("[Grfhic]\n");
- builder.append( " .grfhic = " );
- builder.append(" ( ").append( field_1_grfhic ).append( " )\n" );
- builder.append(" .fHtmlChecked = ").append(isFHtmlChecked()).append('\n');
- builder.append(" .fHtmlUnsupported = ").append(isFHtmlUnsupported()).append('\n');
- builder.append(" .fHtmlListTextNotSharpDot = ").append(isFHtmlListTextNotSharpDot()).append('\n');
- builder.append(" .fHtmlNotPeriod = ").append(isFHtmlNotPeriod()).append('\n');
- builder.append(" .fHtmlFirstLineMismatch = ").append(isFHtmlFirstLineMismatch()).append('\n');
- builder.append(" .fHtmlTabLeftIndentMismatch = ").append(isFHtmlTabLeftIndentMismatch()).append('\n');
- builder.append(" .fHtmlHangingIndentBeneathNumber = ").append(isFHtmlHangingIndentBeneathNumber()).append('\n');
- builder.append(" .fHtmlBuiltInBullet = ").append(isFHtmlBuiltInBullet()).append('\n');
-
- builder.append("[/Grfhic]");
- return builder.toString();
+ String builder = "[Grfhic]\n" +
+ " .grfhic = " +
+ " ( " + field_1_grfhic + " )\n" +
+ " .fHtmlChecked = " + isFHtmlChecked() + '\n' +
+ " .fHtmlUnsupported = " + isFHtmlUnsupported() + '\n' +
+ " .fHtmlListTextNotSharpDot = " + isFHtmlListTextNotSharpDot() + '\n' +
+ " .fHtmlNotPeriod = " + isFHtmlNotPeriod() + '\n' +
+ " .fHtmlFirstLineMismatch = " + isFHtmlFirstLineMismatch() + '\n' +
+ " .fHtmlTabLeftIndentMismatch = " + isFHtmlTabLeftIndentMismatch() + '\n' +
+ " .fHtmlHangingIndentBeneathNumber = " + isFHtmlHangingIndentBeneathNumber() + '\n' +
+ " .fHtmlBuiltInBullet = " + isFHtmlBuiltInBullet() + '\n' +
+ "[/Grfhic]";
+ return builder;
}
/**
@@ -164,7 +159,7 @@ public abstract class GrfhicAbstractType
/**
* Sets the fHtmlUnsupported field value.
- * The numbering sequence or format is unsupported (includes tab & size)
+ * The numbering sequence or format is unsupported (includes tab & size)
*/
@Internal
public void setFHtmlUnsupported( boolean value )
@@ -173,7 +168,7 @@ public abstract class GrfhicAbstractType
}
/**
- * The numbering sequence or format is unsupported (includes tab & size)
+ * The numbering sequence or format is unsupported (includes tab & size)
* @return the fHtmlUnsupported field value.
*/
@Internal
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/PAPAbstractType.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/PAPAbstractType.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/PAPAbstractType.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/PAPAbstractType.java Tue Apr 13 21:37:33 2021
@@ -247,174 +247,91 @@ public abstract class PAPAbstractType {
}
- public String toString()
- {
- StringBuilder builder = new StringBuilder();
- builder.append("[PAP]\n");
- builder.append(" .istd = ");
- builder.append(" (").append(getIstd()).append(" )\n");
- builder.append(" .fSideBySide = ");
- builder.append(" (").append(getFSideBySide()).append(" )\n");
- builder.append(" .fKeep = ");
- builder.append(" (").append(getFKeep()).append(" )\n");
- builder.append(" .fKeepFollow = ");
- builder.append(" (").append(getFKeepFollow()).append(" )\n");
- builder.append(" .fPageBreakBefore = ");
- builder.append(" (").append(getFPageBreakBefore()).append(" )\n");
- builder.append(" .brcl = ");
- builder.append(" (").append(getBrcl()).append(" )\n");
- builder.append(" .brcp = ");
- builder.append(" (").append(getBrcp()).append(" )\n");
- builder.append(" .ilvl = ");
- builder.append(" (").append(getIlvl()).append(" )\n");
- builder.append(" .ilfo = ");
- builder.append(" (").append(getIlfo()).append(" )\n");
- builder.append(" .fNoLnn = ");
- builder.append(" (").append(getFNoLnn()).append(" )\n");
- builder.append(" .lspd = ");
- builder.append(" (").append(getLspd()).append(" )\n");
- builder.append(" .dyaBefore = ");
- builder.append(" (").append(getDyaBefore()).append(" )\n");
- builder.append(" .dyaAfter = ");
- builder.append(" (").append(getDyaAfter()).append(" )\n");
- builder.append(" .fInTable = ");
- builder.append(" (").append(getFInTable()).append(" )\n");
- builder.append(" .finTableW97 = ");
- builder.append(" (").append(getFinTableW97()).append(" )\n");
- builder.append(" .fTtp = ");
- builder.append(" (").append(getFTtp()).append(" )\n");
- builder.append(" .dxaAbs = ");
- builder.append(" (").append(getDxaAbs()).append(" )\n");
- builder.append(" .dyaAbs = ");
- builder.append(" (").append(getDyaAbs()).append(" )\n");
- builder.append(" .dxaWidth = ");
- builder.append(" (").append(getDxaWidth()).append(" )\n");
- builder.append(" .fBrLnAbove = ");
- builder.append(" (").append(getFBrLnAbove()).append(" )\n");
- builder.append(" .fBrLnBelow = ");
- builder.append(" (").append(getFBrLnBelow()).append(" )\n");
- builder.append(" .pcVert = ");
- builder.append(" (").append(getPcVert()).append(" )\n");
- builder.append(" .pcHorz = ");
- builder.append(" (").append(getPcHorz()).append(" )\n");
- builder.append(" .wr = ");
- builder.append(" (").append(getWr()).append(" )\n");
- builder.append(" .fNoAutoHyph = ");
- builder.append(" (").append(getFNoAutoHyph()).append(" )\n");
- builder.append(" .dyaHeight = ");
- builder.append(" (").append(getDyaHeight()).append(" )\n");
- builder.append(" .fMinHeight = ");
- builder.append(" (").append(getFMinHeight()).append(" )\n");
- builder.append(" .dcs = ");
- builder.append(" (").append(getDcs()).append(" )\n");
- builder.append(" .dyaFromText = ");
- builder.append(" (").append(getDyaFromText()).append(" )\n");
- builder.append(" .dxaFromText = ");
- builder.append(" (").append(getDxaFromText()).append(" )\n");
- builder.append(" .fLocked = ");
- builder.append(" (").append(getFLocked()).append(" )\n");
- builder.append(" .fWidowControl = ");
- builder.append(" (").append(getFWidowControl()).append(" )\n");
- builder.append(" .fKinsoku = ");
- builder.append(" (").append(getFKinsoku()).append(" )\n");
- builder.append(" .fWordWrap = ");
- builder.append(" (").append(getFWordWrap()).append(" )\n");
- builder.append(" .fOverflowPunct = ");
- builder.append(" (").append(getFOverflowPunct()).append(" )\n");
- builder.append(" .fTopLinePunct = ");
- builder.append(" (").append(getFTopLinePunct()).append(" )\n");
- builder.append(" .fAutoSpaceDE = ");
- builder.append(" (").append(getFAutoSpaceDE()).append(" )\n");
- builder.append(" .fAutoSpaceDN = ");
- builder.append(" (").append(getFAutoSpaceDN()).append(" )\n");
- builder.append(" .wAlignFont = ");
- builder.append(" (").append(getWAlignFont()).append(" )\n");
- builder.append(" .fontAlign = ");
- builder.append(" (").append(getFontAlign()).append(" )\n");
- builder.append(" .fVertical = ").append(isFVertical()).append('\n');
- builder.append(" .fBackward = ").append(isFBackward()).append('\n');
- builder.append(" .fRotateFont = ").append(isFRotateFont()).append('\n');
- builder.append(" .lvl = ");
- builder.append(" (").append(getLvl()).append(" )\n");
- builder.append(" .fBiDi = ");
- builder.append(" (").append(getFBiDi()).append(" )\n");
- builder.append(" .fNumRMIns = ");
- builder.append(" (").append(getFNumRMIns()).append(" )\n");
- builder.append(" .fCrLf = ");
- builder.append(" (").append(getFCrLf()).append(" )\n");
- builder.append(" .fUsePgsuSettings = ");
- builder.append(" (").append(getFUsePgsuSettings()).append(" )\n");
- builder.append(" .fAdjustRight = ");
- builder.append(" (").append(getFAdjustRight()).append(" )\n");
- builder.append(" .itap = ");
- builder.append(" (").append(getItap()).append(" )\n");
- builder.append(" .fInnerTableCell = ");
- builder.append(" (").append(getFInnerTableCell()).append(" )\n");
- builder.append(" .fOpenTch = ");
- builder.append(" (").append(getFOpenTch()).append(" )\n");
- builder.append(" .fTtpEmbedded = ");
- builder.append(" (").append(getFTtpEmbedded()).append(" )\n");
- builder.append(" .dxcRight = ");
- builder.append(" (").append(getDxcRight()).append(" )\n");
- builder.append(" .dxcLeft = ");
- builder.append(" (").append(getDxcLeft()).append(" )\n");
- builder.append(" .dxcLeft1 = ");
- builder.append(" (").append(getDxcLeft1()).append(" )\n");
- builder.append(" .fDyaBeforeAuto = ");
- builder.append(" (").append(getFDyaBeforeAuto()).append(" )\n");
- builder.append(" .fDyaAfterAuto = ");
- builder.append(" (").append(getFDyaAfterAuto()).append(" )\n");
- builder.append(" .dxaRight = ");
- builder.append(" (").append(getDxaRight()).append(" )\n");
- builder.append(" .dxaLeft = ");
- builder.append(" (").append(getDxaLeft()).append(" )\n");
- builder.append(" .dxaLeft1 = ");
- builder.append(" (").append(getDxaLeft1()).append(" )\n");
- builder.append(" .jc = ");
- builder.append(" (").append(getJc()).append(" )\n");
- builder.append(" .brcTop = ");
- builder.append(" (").append(getBrcTop()).append(" )\n");
- builder.append(" .brcLeft = ");
- builder.append(" (").append(getBrcLeft()).append(" )\n");
- builder.append(" .brcBottom = ");
- builder.append(" (").append(getBrcBottom()).append(" )\n");
- builder.append(" .brcRight = ");
- builder.append(" (").append(getBrcRight()).append(" )\n");
- builder.append(" .brcBetween = ");
- builder.append(" (").append(getBrcBetween()).append(" )\n");
- builder.append(" .brcBar = ");
- builder.append(" (").append(getBrcBar()).append(" )\n");
- builder.append(" .shd = ");
- builder.append(" (").append(getShd()).append(" )\n");
- builder.append(" .anld = ");
- builder.append(" (").append(Arrays.toString(getAnld())).append(" )\n");
- builder.append(" .phe = ");
- builder.append(" (").append(Arrays.toString(getPhe())).append(" )\n");
- builder.append(" .fPropRMark = ");
- builder.append(" (").append(getFPropRMark()).append(" )\n");
- builder.append(" .ibstPropRMark = ");
- builder.append(" (").append(getIbstPropRMark()).append(" )\n");
- builder.append(" .dttmPropRMark = ");
- builder.append(" (").append(getDttmPropRMark()).append(" )\n");
- builder.append(" .itbdMac = ");
- builder.append(" (").append(getItbdMac()).append(" )\n");
- builder.append(" .rgdxaTab = ");
- builder.append(" (").append(Arrays.toString(getRgdxaTab())).append(" )\n");
- builder.append(" .rgtbd = ");
- builder.append(" (").append(Arrays.toString(getRgtbd())).append(" )\n");
- builder.append(" .numrm = ");
- builder.append(" (").append(Arrays.toString(getNumrm())).append(" )\n");
- builder.append(" .ptap = ");
- builder.append(" (").append(Arrays.toString(getPtap())).append(" )\n");
- builder.append(" .fNoAllowOverlap = ");
- builder.append(" (").append(getFNoAllowOverlap()).append(" )\n");
- builder.append(" .ipgp = ");
- builder.append(" (").append(getIpgp()).append(" )\n");
- builder.append(" .rsid = ");
- builder.append(" (").append(getRsid()).append(" )\n");
-
- builder.append("[/PAP]\n");
- return builder.toString();
+ public String toString() {
+ return "[PAP]\n" +
+ " .istd = (" + getIstd() + " )\n" +
+ " .fSideBySide = (" + getFSideBySide() + " )\n" +
+ " .fKeep = (" + getFKeep() + " )\n" +
+ " .fKeepFollow = (" + getFKeepFollow() + " )\n" +
+ " .fPageBreakBefore = (" + getFPageBreakBefore() + " )\n" +
+ " .brcl = (" + getBrcl() + " )\n" +
+ " .brcp = (" + getBrcp() + " )\n" +
+ " .ilvl = (" + getIlvl() + " )\n" +
+ " .ilfo = (" + getIlfo() + " )\n" +
+ " .fNoLnn = (" + getFNoLnn() + " )\n" +
+ " .lspd = (" + getLspd() + " )\n" +
+ " .dyaBefore = (" + getDyaBefore() + " )\n" +
+ " .dyaAfter = (" + getDyaAfter() + " )\n" +
+ " .fInTable = (" + getFInTable() + " )\n" +
+ " .finTableW97 = (" + getFinTableW97() + " )\n" +
+ " .fTtp = (" + getFTtp() + " )\n" +
+ " .dxaAbs = (" + getDxaAbs() + " )\n" +
+ " .dyaAbs = (" + getDyaAbs() + " )\n" +
+ " .dxaWidth = (" + getDxaWidth() + " )\n" +
+ " .fBrLnAbove = (" + getFBrLnAbove() + " )\n" +
+ " .fBrLnBelow = (" + getFBrLnBelow() + " )\n" +
+ " .pcVert = (" + getPcVert() + " )\n" +
+ " .pcHorz = (" + getPcHorz() + " )\n" +
+ " .wr = (" + getWr() + " )\n" +
+ " .fNoAutoHyph = (" + getFNoAutoHyph() + " )\n" +
+ " .dyaHeight = (" + getDyaHeight() + " )\n" +
+ " .fMinHeight = (" + getFMinHeight() + " )\n" +
+ " .dcs = (" + getDcs() + " )\n" +
+ " .dyaFromText = (" + getDyaFromText() + " )\n" +
+ " .dxaFromText = (" + getDxaFromText() + " )\n" +
+ " .fLocked = (" + getFLocked() + " )\n" +
+ " .fWidowControl = (" + getFWidowControl() + " )\n" +
+ " .fKinsoku = (" + getFKinsoku() + " )\n" +
+ " .fWordWrap = (" + getFWordWrap() + " )\n" +
+ " .fOverflowPunct = (" + getFOverflowPunct() + " )\n" +
+ " .fTopLinePunct = (" + getFTopLinePunct() + " )\n" +
+ " .fAutoSpaceDE = (" + getFAutoSpaceDE() + " )\n" +
+ " .fAutoSpaceDN = (" + getFAutoSpaceDN() + " )\n" +
+ " .wAlignFont = (" + getWAlignFont() + " )\n" +
+ " .fontAlign = (" + getFontAlign() + " )\n" +
+ " .fVertical = " + isFVertical() + '\n' +
+ " .fBackward = " + isFBackward() + '\n' +
+ " .fRotateFont = " + isFRotateFont() + '\n' +
+ " .lvl = (" + getLvl() + " )\n" +
+ " .fBiDi = (" + getFBiDi() + " )\n" +
+ " .fNumRMIns = (" + getFNumRMIns() + " )\n" +
+ " .fCrLf = (" + getFCrLf() + " )\n" +
+ " .fUsePgsuSettings = (" + getFUsePgsuSettings() + " )\n" +
+ " .fAdjustRight = (" + getFAdjustRight() + " )\n" +
+ " .itap = (" + getItap() + " )\n" +
+ " .fInnerTableCell = (" + getFInnerTableCell() + " )\n" +
+ " .fOpenTch = (" + getFOpenTch() + " )\n" +
+ " .fTtpEmbedded = (" + getFTtpEmbedded() + " )\n" +
+ " .dxcRight = (" + getDxcRight() + " )\n" +
+ " .dxcLeft = (" + getDxcLeft() + " )\n" +
+ " .dxcLeft1 = (" + getDxcLeft1() + " )\n" +
+ " .fDyaBeforeAuto = (" + getFDyaBeforeAuto() + " )\n" +
+ " .fDyaAfterAuto = (" + getFDyaAfterAuto() + " )\n" +
+ " .dxaRight = (" + getDxaRight() + " )\n" +
+ " .dxaLeft = (" + getDxaLeft() + " )\n" +
+ " .dxaLeft1 = (" + getDxaLeft1() + " )\n" +
+ " .jc = (" + getJc() + " )\n" +
+ " .brcTop = (" + getBrcTop() + " )\n" +
+ " .brcLeft = (" + getBrcLeft() + " )\n" +
+ " .brcBottom = (" + getBrcBottom() + " )\n" +
+ " .brcRight = (" + getBrcRight() + " )\n" +
+ " .brcBetween = (" + getBrcBetween() + " )\n" +
+ " .brcBar = (" + getBrcBar() + " )\n" +
+ " .shd = (" + getShd() + " )\n" +
+ " .anld = (" + Arrays.toString(getAnld()) + " )\n" +
+ " .phe = (" + Arrays.toString(getPhe()) + " )\n" +
+ " .fPropRMark = (" + getFPropRMark() + " )\n" +
+ " .ibstPropRMark = (" + getIbstPropRMark() + " )\n" +
+ " .dttmPropRMark = (" + getDttmPropRMark() + " )\n" +
+ " .itbdMac = (" + getItbdMac() + " )\n" +
+ " .rgdxaTab = (" + Arrays.toString(getRgdxaTab()) + " )\n" +
+ " .rgtbd = (" + Arrays.toString(getRgtbd()) + " )\n" +
+ " .numrm = (" + Arrays.toString(getNumrm()) + " )\n" +
+ " .ptap = (" + Arrays.toString(getPtap()) + " )\n" +
+ " .fNoAllowOverlap = (" + getFNoAllowOverlap() + " )\n" +
+ " .ipgp = (" + getIpgp() + " )\n" +
+ " .rsid = (" + getRsid() + " )\n" +
+ "[/PAP]\n";
}
/**
@@ -1785,7 +1702,7 @@ public abstract class PAPAbstractType {
}
/**
- * Number of tabs stops defined for paragraph. Must be >= 0 and <= 64..
+ * Number of tabs stops defined for paragraph. Must be >= 0 and <= 64..
*/
@Internal
public int getItbdMac()
@@ -1794,7 +1711,7 @@ public abstract class PAPAbstractType {
}
/**
- * Number of tabs stops defined for paragraph. Must be >= 0 and <= 64..
+ * Number of tabs stops defined for paragraph. Must be >= 0 and <= 64..
*/
@Internal
public void setItbdMac( int field_72_itbdMac )
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/TAPAbstractType.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/TAPAbstractType.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/TAPAbstractType.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/model/types/TAPAbstractType.java Tue Apr 13 21:37:33 2021
@@ -895,7 +895,7 @@ public abstract class TAPAbstractType {
}
/**
- * Count of cells defined for this row. itcMac must be >= 0 and less than or equal to 64..
+ * Count of cells defined for this row. itcMac must be >= 0 and less than or equal to 64..
*/
@Internal
public short getItcMac()
@@ -904,7 +904,7 @@ public abstract class TAPAbstractType {
}
/**
- * Count of cells defined for this row. itcMac must be >= 0 and less than or equal to 64..
+ * Count of cells defined for this row. itcMac must be >= 0 and less than or equal to 64..
*/
@Internal
public void setItcMac( short field_26_itcMac )
Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/usermodel/Paragraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/usermodel/Paragraph.java?rev=1888746&r1=1888745&r2=1888746&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/usermodel/Paragraph.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/usermodel/Paragraph.java Tue Apr 13 21:37:33 2021
@@ -547,11 +547,9 @@ public class Paragraph extends Range imp
}
/**
- * Returns number of tabs stops defined for paragraph. Must be >= 0 and <=
- * 64.
+ * Returns number of tabs stops defined for paragraph. Must be >= 0 and <= 64.
*
- * @return number of tabs stops defined for paragraph. Must be >= 0 and <=
- * 64
+ * @return number of tabs stops defined for paragraph. Must be >= 0 and <= 64
*/
public int getTabStopsNumber()
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org