latest patches and changes
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353540 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7e34048b96
commit
ad71becd4b
@ -48,12 +48,10 @@ import org.apache.poi.hwpf.usermodel.*;
|
||||
* @author Ryan Ackley
|
||||
*/
|
||||
public class HWPFDocument
|
||||
// implements Cloneable
|
||||
{
|
||||
/** OLE stuff*/
|
||||
private POIFSFileSystem _filesystem;
|
||||
|
||||
/** The FIB*/
|
||||
private FileInformationBlock _fib;
|
||||
protected FileInformationBlock _fib;
|
||||
|
||||
/** main document stream buffer*/
|
||||
private byte[] _mainStream;
|
||||
@ -62,34 +60,34 @@ public class HWPFDocument
|
||||
private byte[] _tableStream;
|
||||
|
||||
/** data stream buffer*/
|
||||
private byte[] _dataStream;
|
||||
protected byte[] _dataStream;
|
||||
|
||||
/** Document wide Properties*/
|
||||
private DocumentProperties _dop;
|
||||
protected DocumentProperties _dop;
|
||||
|
||||
/** Contains text of the document wrapped in a obfuscated Wod data structure*/
|
||||
private ComplexFileTable _cft;
|
||||
/** Contains text of the document wrapped in a obfuscated Word data
|
||||
* structure*/
|
||||
protected ComplexFileTable _cft;
|
||||
|
||||
private TextPieceTable _tpt;
|
||||
protected TextPieceTable _tpt;
|
||||
|
||||
/** Contains formatting properties for text*/
|
||||
private CHPBinTable _cbt;
|
||||
protected CHPBinTable _cbt;
|
||||
|
||||
/** Contains formatting properties for paragraphs*/
|
||||
private PAPBinTable _pbt;
|
||||
protected PAPBinTable _pbt;
|
||||
|
||||
/** Contains formatting properties for sections.*/
|
||||
private SectionTable _st;
|
||||
protected SectionTable _st;
|
||||
|
||||
/** Holds styles for this document.*/
|
||||
private StyleSheet _ss;
|
||||
protected StyleSheet _ss;
|
||||
|
||||
/** Holds fonts for this document.*/
|
||||
private FontTable _ft;
|
||||
protected FontTable _ft;
|
||||
|
||||
/** Hold list tables */
|
||||
private ListTables _lt;
|
||||
|
||||
protected ListTables _lt;
|
||||
|
||||
/**
|
||||
* This constructor loads a Word document from an InputStream.
|
||||
@ -101,13 +99,13 @@ public class HWPFDocument
|
||||
public HWPFDocument(InputStream istream) throws IOException
|
||||
{
|
||||
//do Ole stuff
|
||||
_filesystem = new POIFSFileSystem(istream);
|
||||
POIFSFileSystem filesystem = new POIFSFileSystem(istream);
|
||||
|
||||
// read in the main stream.
|
||||
DocumentEntry documentProps =
|
||||
(DocumentEntry)_filesystem.getRoot().getEntry("WordDocument");
|
||||
(DocumentEntry)filesystem.getRoot().getEntry("WordDocument");
|
||||
_mainStream = new byte[documentProps.getSize()];
|
||||
_filesystem.createDocumentInputStream("WordDocument").read(_mainStream);
|
||||
filesystem.createDocumentInputStream("WordDocument").read(_mainStream);
|
||||
|
||||
// use the fib to determine the name of the table stream.
|
||||
_fib = new FileInformationBlock(_mainStream);
|
||||
@ -120,9 +118,9 @@ public class HWPFDocument
|
||||
|
||||
// read in the table stream.
|
||||
DocumentEntry tableProps =
|
||||
(DocumentEntry)_filesystem.getRoot().getEntry(name);
|
||||
(DocumentEntry)filesystem.getRoot().getEntry(name);
|
||||
_tableStream = new byte[tableProps.getSize()];
|
||||
_filesystem.createDocumentInputStream(name).read(_tableStream);
|
||||
filesystem.createDocumentInputStream(name).read(_tableStream);
|
||||
|
||||
_fib.fillVariableFields(_mainStream, _tableStream);
|
||||
|
||||
@ -130,9 +128,9 @@ public class HWPFDocument
|
||||
try
|
||||
{
|
||||
DocumentEntry dataProps =
|
||||
(DocumentEntry) _filesystem.getRoot().getEntry("Data");
|
||||
(DocumentEntry) filesystem.getRoot().getEntry("Data");
|
||||
_dataStream = new byte[dataProps.getSize()];
|
||||
_filesystem.createDocumentInputStream("Data").read(_dataStream);
|
||||
filesystem.createDocumentInputStream("Data").read(_dataStream);
|
||||
}
|
||||
catch(java.io.FileNotFoundException e)
|
||||
{
|
||||
@ -431,4 +429,17 @@ public class HWPFDocument
|
||||
t.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// public Object clone()
|
||||
// throws CloneNotSupportedException
|
||||
// {
|
||||
// _tpt;
|
||||
//
|
||||
// _cbt;
|
||||
//
|
||||
// _pbt;
|
||||
//
|
||||
// _st;
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
@ -1,58 +1,18 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2003 The Apache Software Foundation. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. The end-user documentation included with the redistribution,
|
||||
* if any, must include the following acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache POI" must not be used to endorse or promote products
|
||||
* derived from this software without prior written permission. For
|
||||
* written permission, please contact apache@apache.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "Apache",
|
||||
* "Apache POI", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Apache Software Foundation. For more
|
||||
* information on the Apache Software Foundation, please see
|
||||
* <http://www.apache.org/>.
|
||||
*/
|
||||
/* ====================================================================
|
||||
Copyright 2002-2004 Apache Software Foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.hwpf.model;
|
||||
|
||||
@ -76,6 +36,11 @@ public class CHPBinTable
|
||||
/** List of character properties.*/
|
||||
ArrayList _textRuns = new ArrayList();
|
||||
|
||||
|
||||
public CHPBinTable()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to read a binTable in from a Word document.
|
||||
*
|
||||
|
@ -69,6 +69,11 @@ public class ComplexFileTable
|
||||
|
||||
TextPieceTable _tpt;
|
||||
|
||||
public ComplexFileTable()
|
||||
{
|
||||
_tpt = new TextPieceTable();
|
||||
}
|
||||
|
||||
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
|
||||
@ -110,7 +115,6 @@ public class ComplexFileTable
|
||||
LittleEndian.putInt(numHolder, table.length);
|
||||
tableStream.write(numHolder);
|
||||
tableStream.write(table);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -73,10 +73,6 @@ public class ListFormatOverrideLevel
|
||||
|
||||
public ListFormatOverrideLevel(byte[] buf, int offset)
|
||||
{
|
||||
while(buf[offset] == -1)
|
||||
{
|
||||
offset++;
|
||||
}
|
||||
_iStartAt = LittleEndian.getInt(buf, offset);
|
||||
offset += LittleEndian.INT_SIZE;
|
||||
_info = buf[offset++];
|
||||
|
@ -112,6 +112,10 @@ public class ListTables
|
||||
int num = lfo.numOverrides();
|
||||
for (int y = 0; y < num; y++)
|
||||
{
|
||||
while(tableStream[lfolvlOffset] == -1)
|
||||
{
|
||||
lfolvlOffset++;
|
||||
}
|
||||
ListFormatOverrideLevel lfolvl = new ListFormatOverrideLevel(tableStream, lfolvlOffset);
|
||||
lfo.setOverride(y, lfolvl);
|
||||
lfolvlOffset += lfolvl.getSizeInBytes();
|
||||
|
@ -1,57 +1,18 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2003 The Apache Software Foundation. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. The end-user documentation included with the redistribution,
|
||||
* if any, must include the following acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache POI" must not be used to endorse or promote products
|
||||
* derived from this software without prior written permission. For
|
||||
* written permission, please contact apache@apache.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "Apache",
|
||||
* "Apache POI", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Apache Software Foundation. For more
|
||||
* information on the Apache Software Foundation, please see
|
||||
* <http://www.apache.org/>.
|
||||
*/
|
||||
/* ====================================================================
|
||||
Copyright 2002-2004 Apache Software Foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.hwpf.model;
|
||||
|
||||
@ -69,12 +30,18 @@ import org.apache.poi.util.LittleEndian;
|
||||
* This class represents the bin table of Word document but it also serves as a
|
||||
* holder for all of the paragraphs of document that have been loaded into
|
||||
* memory.
|
||||
*
|
||||
* @author Ryan Ackley
|
||||
*/
|
||||
public class PAPBinTable
|
||||
{
|
||||
ArrayList _paragraphs = new ArrayList();
|
||||
byte[] _dataStream;
|
||||
|
||||
public PAPBinTable()
|
||||
{
|
||||
}
|
||||
|
||||
public PAPBinTable(byte[] documentStream, byte[] tableStream, byte[] dataStream, int offset,
|
||||
int size, int fcMin)
|
||||
{
|
||||
|
@ -1,58 +1,18 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2003 The Apache Software Foundation. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. The end-user documentation included with the redistribution,
|
||||
* if any, must include the following acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache POI" must not be used to endorse or promote products
|
||||
* derived from this software without prior written permission. For
|
||||
* written permission, please contact apache@apache.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "Apache",
|
||||
* "Apache POI", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Apache Software Foundation. For more
|
||||
* information on the Apache Software Foundation, please see
|
||||
* <http://www.apache.org/>.
|
||||
*/
|
||||
/* ====================================================================
|
||||
Copyright 2002-2004 Apache Software Foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
package org.apache.poi.hwpf.model;
|
||||
|
||||
@ -63,12 +23,19 @@ import java.io.IOException;
|
||||
import org.apache.poi.util.LittleEndian;
|
||||
import org.apache.poi.hwpf.model.io.*;
|
||||
|
||||
/**
|
||||
* @author Ryan Ackley
|
||||
*/
|
||||
public class SectionTable
|
||||
{
|
||||
private static final int SED_SIZE = 12;
|
||||
|
||||
private ArrayList _sections = new ArrayList();
|
||||
|
||||
public SectionTable()
|
||||
{
|
||||
}
|
||||
|
||||
public SectionTable(byte[] documentStream, byte[] tableStream, int offset,
|
||||
int size, int fcMin)
|
||||
{
|
||||
|
@ -1,57 +1,18 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2003 The Apache Software Foundation. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. The end-user documentation included with the redistribution,
|
||||
* if any, must include the following acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache POI" must not be used to endorse or promote products
|
||||
* derived from this software without prior written permission. For
|
||||
* written permission, please contact apache@apache.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "Apache",
|
||||
* "Apache POI", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Apache Software Foundation. For more
|
||||
* information on the Apache Software Foundation, please see
|
||||
* <http://www.apache.org/>.
|
||||
*/
|
||||
/* ====================================================================
|
||||
Copyright 2002-2004 Apache Software Foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
|
||||
|
||||
package org.apache.poi.hwpf.model;
|
||||
@ -67,13 +28,19 @@ import org.apache.poi.poifs.common.POIFSConstants;
|
||||
|
||||
import org.apache.poi.hwpf.model.io.*;
|
||||
|
||||
|
||||
/**
|
||||
* @author Ryan Ackley
|
||||
*/
|
||||
public class TextPieceTable
|
||||
{
|
||||
ArrayList _textPieces = new ArrayList();
|
||||
//int _multiple;
|
||||
int _cpMin;
|
||||
|
||||
public TextPieceTable()
|
||||
{
|
||||
}
|
||||
|
||||
public TextPieceTable(byte[] documentStream, byte[] tableStream, int offset,
|
||||
int size, int fcMin)
|
||||
throws UnsupportedEncodingException
|
||||
@ -236,5 +203,4 @@ public class TextPieceTable
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -444,7 +444,7 @@ public class ParagraphSprmUncompressor
|
||||
for (int x = 0; x < delSize; x++)
|
||||
{
|
||||
tabMap.remove(new Integer(LittleEndian.getInt(grpprl, offset)));
|
||||
offset += LittleEndian.INT_SIZE;;
|
||||
offset += LittleEndian.SHORT_SIZE;
|
||||
}
|
||||
|
||||
int addSize = grpprl[offset++];
|
||||
|
@ -268,7 +268,7 @@ public class CharacterProperties
|
||||
return isFDStrike();
|
||||
}
|
||||
|
||||
public void setDoubleStrikethrough(boolean dstrike)
|
||||
public void setDoubleStrikeThrough(boolean dstrike)
|
||||
{
|
||||
super.setFDStrike(dstrike);
|
||||
}
|
||||
|
@ -662,15 +662,15 @@ public class Range
|
||||
r.initAll();
|
||||
int tableEnd = r._parEnd;
|
||||
|
||||
if (r._parStart != 0 && ((Paragraph)r._paragraphs.get(r._parStart - 1)).isInTable())
|
||||
if (r._parStart != 0 && getParagraph(r._parStart - 1).isInTable())
|
||||
{
|
||||
throw new IllegalArgumentException("This paragraph is not the first one in the table");
|
||||
}
|
||||
|
||||
int limit = r._paragraphs.size();
|
||||
int limit = _paragraphs.size();
|
||||
for (; tableEnd < limit; tableEnd++)
|
||||
{
|
||||
if (!((Paragraph)r._paragraphs.get(tableEnd)).isInTable())
|
||||
if (!getParagraph(tableEnd).isInTable())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -1,16 +1,90 @@
|
||||
package org.apache.poi.hwpf.usermodel;
|
||||
|
||||
|
||||
public class TableCell
|
||||
extends Range
|
||||
{
|
||||
int _levelNum;
|
||||
private int _levelNum;
|
||||
private TableCellDescriptor _tcd;
|
||||
private int _leftEdge;
|
||||
private int _width;
|
||||
|
||||
public TableCell(int startIdx, int endIdx, TableRow parent, int levelNum, TableCellDescriptor tcd)
|
||||
public TableCell(int startIdx, int endIdx, TableRow parent, int levelNum, TableCellDescriptor tcd, int leftEdge, int width)
|
||||
{
|
||||
super(startIdx, endIdx, Range.TYPE_PARAGRAPH, parent);
|
||||
_tcd = tcd;
|
||||
_leftEdge = leftEdge;
|
||||
_width = width;
|
||||
_levelNum = levelNum;
|
||||
}
|
||||
|
||||
public boolean isFirstMerged()
|
||||
{
|
||||
return _tcd.isFFirstMerged();
|
||||
}
|
||||
|
||||
public boolean isMerged()
|
||||
{
|
||||
return _tcd.isFMerged();
|
||||
}
|
||||
|
||||
public boolean isVertical()
|
||||
{
|
||||
return _tcd.isFVertical();
|
||||
}
|
||||
|
||||
public boolean isBackward()
|
||||
{
|
||||
return _tcd.isFBackward();
|
||||
}
|
||||
|
||||
public boolean isRotateFont()
|
||||
{
|
||||
return _tcd.isFRotateFont();
|
||||
}
|
||||
|
||||
public boolean isVerticallyMerged()
|
||||
{
|
||||
return _tcd.isFVertMerge();
|
||||
}
|
||||
|
||||
public boolean isFirstVerticallyMerged()
|
||||
{
|
||||
return _tcd.isFVertRestart();
|
||||
}
|
||||
|
||||
public byte getVertAlign()
|
||||
{
|
||||
return _tcd.getVertAlign();
|
||||
}
|
||||
|
||||
public BorderCode getBrcTop()
|
||||
{
|
||||
return _tcd.getBrcTop();
|
||||
}
|
||||
|
||||
public BorderCode getBrcBottom()
|
||||
{
|
||||
return _tcd.getBrcBottom();
|
||||
}
|
||||
|
||||
public BorderCode getBrcLeft()
|
||||
{
|
||||
return _tcd.getBrcLeft();
|
||||
}
|
||||
|
||||
public BorderCode getBrcRight()
|
||||
{
|
||||
return _tcd.getBrcRight();
|
||||
}
|
||||
|
||||
public int getLeftEdge() // twips
|
||||
{
|
||||
return _leftEdge;
|
||||
}
|
||||
|
||||
public int getWidth() // twips
|
||||
{
|
||||
return _width;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package org.apache.poi.hwpf.usermodel;
|
||||
|
||||
|
||||
import org.apache.poi.hwpf.sprm.TableSprmUncompressor;
|
||||
import org.apache.poi.hwpf.sprm.SprmBuffer;
|
||||
|
||||
@ -16,8 +15,8 @@ public class TableRow
|
||||
private final static short SPRM_DYAROWHEIGHT = (short)0x9407;
|
||||
|
||||
int _levelNum;
|
||||
TableProperties _tprops;
|
||||
TableCell[] _cells;
|
||||
private TableProperties _tprops;
|
||||
private TableCell[] _cells;
|
||||
|
||||
public TableRow(int startIdx, int endIdx, Table parent, int levelNum)
|
||||
{
|
||||
@ -28,17 +27,26 @@ public class TableRow
|
||||
_cells = new TableCell[_tprops.getItcMac()];
|
||||
|
||||
int start = 0;
|
||||
int cellIndex = 0;
|
||||
for (int x = 0; x < numParagraphs(); x++)
|
||||
int end = 0;
|
||||
|
||||
for (int cellIndex = 0; cellIndex < _cells.length; cellIndex++)
|
||||
{
|
||||
Paragraph p = getParagraph(x);
|
||||
Paragraph p = getParagraph(start);
|
||||
String s = p.text();
|
||||
|
||||
if ((levelNum == 1 && s.charAt(s.length()-1) == TABLE_CELL_MARK) ||
|
||||
p.isEmbeddedCellMark() && p.getTableLevel() == levelNum)
|
||||
while (! ( (levelNum == 1 && s.charAt(s.length() - 1) == TABLE_CELL_MARK) ||
|
||||
p.isEmbeddedCellMark() && p.getTableLevel() == levelNum))
|
||||
{
|
||||
_cells[cellIndex] = new TableCell(start, x+1, this, levelNum, _tprops.getRgtc()[cellIndex]);
|
||||
end++;
|
||||
p = getParagraph(end);
|
||||
s = p.text();
|
||||
}
|
||||
_cells[cellIndex] = new TableCell(start, end, this, levelNum,
|
||||
_tprops.getRgtc()[cellIndex],
|
||||
_tprops.getRgdxaCenter()[cellIndex],
|
||||
_tprops.getRgdxaCenter()[cellIndex+1]-_tprops.getRgdxaCenter()[cellIndex]);
|
||||
end++;
|
||||
start = end;
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,4 +105,13 @@ public class TableRow
|
||||
_papx.updateSprm(SPRM_FTABLEHEADER, (byte)(tableHeader ? 1 : 0));
|
||||
}
|
||||
|
||||
public int numCells()
|
||||
{
|
||||
return _cells.length;
|
||||
}
|
||||
|
||||
public TableCell getCell(int index)
|
||||
{
|
||||
return _cells[index];
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user