public void dumpTextPieces( boolean withText ) { for ( TextPiece textPiece : _doc.getTextTable().getTextPieces() ) { System.out.println( textPiece ); if ( withText ) { System.out.println( "\t" + textPiece.getStringBuilder() ); } } } }
protected TextPieceTable newTextPieceTable(byte[] documentStream, byte[] tableStream, int offset, int pieceTableSize, int fcMin, Charset charset) { return new TextPieceTable(documentStream, tableStream, offset, pieceTableSize, fcMin); }
@Deprecated public int getCharIndex( int bytePos ) { return getCharIndex( bytePos, 0 ); }
tpt = cft.getTextPieceTable(); for(TextPiece tp : tpt.getTextPieces()) { text.append( tp.getStringBuilder() ); tpt = new TextPieceTable(); byte[] textData = new byte[_fib.getFibBase().getFcMac()-_fib.getFibBase().getFcMin()]; System.arraycopy(_mainStream, _fib.getFibBase().getFcMin(), textData, 0, textData.length); 0, textData.length, textData, pd ); tpt.add(tp); _text = tpt.getText();
_pbt = new PAPBinTable(_mainStream, _tableStream, _dataStream, _fib.getFcPlcfbtePapx(), _fib.getLcbPlcfbtePapx(), _tpt); _text = _tpt.getText(); _tpt = _cft.getTextPieceTable(); final TextPiece textPiece = new SinglentonTextPiece( _text ); _tpt.add( textPiece ); _text = textPiece.getStringBuilder();
public void writeTo(ByteArrayOutputStream wordDocumentStream, ByteArrayOutputStream tableStream) throws IOException { tableStream.write(TEXT_PIECE_TABLE_TYPE); byte[] table = _tpt.writeTo(wordDocumentStream); byte[] numHolder = new byte[LittleEndian.INT_SIZE]; LittleEndian.putInt(numHolder, 0, table.length); tableStream.write(numHolder); tableStream.write(table); }
@Deprecated public int getCharIndex(int startBytePos, int startCP) { int charCount = 0; int bytePos = lookIndexForward(startBytePos); for (TextPiece tp : _textPieces) { int pieceStart = tp.getPieceDescriptor().getFilePosition(); int bytesLength = tp.bytesLength(); int pieceEnd = pieceStart + bytesLength; int toAdd; if (bytePos < pieceStart || bytePos > pieceEnd) { toAdd = bytesLength; } else if (bytePos > pieceStart && bytePos < pieceEnd) { toAdd = (bytePos - pieceStart); } else { toAdd = bytesLength - (pieceEnd - bytePos); } if (tp.isUnicode()) { charCount += toAdd / 2; } else { charCount += toAdd; } if (bytePos >= pieceStart && bytePos <= pieceEnd && charCount >= startCP) { break; } } return charCount; }
_pbt = new PAPBinTable(_mainStream, _tableStream, _dataStream, _fib.getFcPlcfbtePapx(), _fib.getLcbPlcfbtePapx(), _tpt); _text = _tpt.getText(); _tpt = _cft.getTextPieceTable(); final TextPiece textPiece = new SinglentonTextPiece( _text ); _tpt.add( textPiece ); _text = textPiece.getStringBuilder();
public void writeTo( HWPFOutputStream wordDocumentStream, HWPFOutputStream tableStream ) throws IOException { tableStream.write( TEXT_PIECE_TABLE_TYPE ); byte[] table = _tpt.writeTo( wordDocumentStream ); byte[] numHolder = new byte[LittleEndian.INT_SIZE]; LittleEndian.putInt( numHolder, table.length ); tableStream.write( numHolder ); tableStream.write( table ); }
int bytePos = lookIndexForward( startBytePos );
public void dumpTextPieces( boolean withText ) { for ( TextPiece textPiece : _doc.getTextTable().getTextPieces() ) { System.out.println( textPiece ); if ( withText ) { System.out.println( "\t" + textPiece.getStringBuilder() ); } } } }
public ComplexFileTable() { _tpt = new TextPieceTable(); }
@Deprecated public int getCharIndex(int bytePos) { return getCharIndex(bytePos, 0); }
/** * Get the text from the word file, as an array with one String * per paragraph */ @Deprecated public String[] getParagraphText() { String[] ret; // Extract using the model code try { Range r = doc.getRange(); ret = WordExtractor.getParagraphText(r); } catch (Exception e) { // Something's up with turning the text pieces into paragraphs // Fall back to ripping out the text pieces ret = new String[doc.getTextTable().getTextPieces().size()]; for(int i=0; i<ret.length; i++) { ret[i] = doc.getTextTable().getTextPieces().get(i).getStringBuilder().toString(); // Fix the line endings ret[i] = ret[i].replaceAll("\r", "\ufffe"); ret[i] = ret[i].replaceAll("\ufffe","\r\n"); } } return ret; }
public ComplexFileTable() { _tpt = new TextPieceTable(); }
/** * Get the text from the word file, as an array with one String * per paragraph */ @Deprecated public String[] getParagraphText() { String[] ret; // Extract using the model code try { Range r = doc.getRange(); ret = WordExtractor.getParagraphText(r); } catch (Exception e) { // Something's up with turning the text pieces into paragraphs // Fall back to ripping out the text pieces ret = new String[doc.getTextTable().getTextPieces().size()]; for(int i=0; i<ret.length; i++) { ret[i] = doc.getTextTable().getTextPieces().get(i).getStringBuilder().toString(); // Fix the line endings ret[i].replaceAll("\r", "\ufffe"); ret[i].replaceAll("\ufffe","\r\n"); } } return ret; }
public ComplexFileTable(byte[] documentStream, byte[] tableStream, int offset, int fcMin) throws IOException { //skips through the prms before we reach the piece table. These contain data //for actual fast saved files List<SprmBuffer> sprmBuffers = new LinkedList<SprmBuffer>(); while ( tableStream[offset] == GRPPRL_TYPE ) { offset++; int size = LittleEndian.getShort( tableStream, offset ); offset += LittleEndian.SHORT_SIZE; byte[] bs = LittleEndian.getByteArray( tableStream, offset, size ); offset += size; SprmBuffer sprmBuffer = new SprmBuffer( bs, false, 0 ); sprmBuffers.add( sprmBuffer ); } this._grpprls = sprmBuffers.toArray( new SprmBuffer[sprmBuffers.size()] ); if(tableStream[offset] != TEXT_PIECE_TABLE_TYPE) { throw new IOException("The text piece table is corrupted"); } int pieceTableSize = LittleEndian.getInt(tableStream, ++offset); offset += LittleEndian.INT_SIZE; _tpt = new TextPieceTable(documentStream, tableStream, offset, pieceTableSize, fcMin); }