use of org.apache.poi.hwpf.model.PAPX in project poi by apache.
the class HWPFLister method dumpPapx.
public void dumpPapx(boolean withProperties, boolean withSprms) throws Exception {
if (_doc instanceof HWPFDocument) {
System.out.println("binary PAP pages ");
HWPFDocument doc = (HWPFDocument) _doc;
byte[] mainStream = _doc.getMainStream();
PlexOfCps binTable = new PlexOfCps(doc.getTableStream(), doc.getFileInformationBlock().getFcPlcfbtePapx(), doc.getFileInformationBlock().getLcbPlcfbtePapx(), 4);
List<PAPX> papxs = new ArrayList<PAPX>();
int length = binTable.length();
for (int x = 0; x < length; x++) {
GenericPropertyNode node = binTable.getProperty(x);
int pageNum = LittleEndian.getInt(node.getBytes());
int pageOffset = POIFSConstants.SMALLER_BIG_BLOCK_SIZE * pageNum;
PAPFormattedDiskPage pfkp = new PAPFormattedDiskPage(mainStream, doc.getDataStream(), pageOffset, doc.getTextTable());
System.out.println("* PFKP: " + pfkp);
for (PAPX papx : pfkp.getPAPXs()) {
System.out.println("** " + papx);
papxs.add(papx);
if (papx != null && withSprms) {
SprmIterator sprmIt = new SprmIterator(papx.getGrpprl(), 2);
dumpSprms(sprmIt, "*** ");
}
}
}
Collections.sort(papxs);
System.out.println("* Sorted by END");
for (PAPX papx : papxs) {
System.out.println("** " + papx);
if (papx != null && withSprms) {
SprmIterator sprmIt = new SprmIterator(papx.getGrpprl(), 2);
dumpSprms(sprmIt, "*** ");
}
}
}
for (PAPX papx : _doc.getParagraphTable().getParagraphs()) {
System.out.println(papx);
if (withProperties) {
Paragraph paragraph = Paragraph.newParagraph(_doc.getOverallRange(), papx);
System.out.println(paragraph.getProps());
}
SprmIterator sprmIt = new SprmIterator(papx.getGrpprl(), 2);
dumpSprms(sprmIt, "\t");
}
}
use of org.apache.poi.hwpf.model.PAPX in project poi by apache.
the class HWPFLister method dumpParagraphs.
public void dumpParagraphs(boolean dumpAssotiatedPapx) {
for (Map.Entry<Integer, String> entry : paragraphs.entrySet()) {
Integer endOfParagraphCharOffset = entry.getKey();
System.out.println("[...; " + (endOfParagraphCharOffset + 1) + "): " + entry.getValue());
if (dumpAssotiatedPapx) {
boolean hasAssotiatedPapx = false;
for (PAPX papx : _doc.getParagraphTable().getParagraphs()) {
if (papx.getStart() <= endOfParagraphCharOffset.intValue() && endOfParagraphCharOffset.intValue() < papx.getEnd()) {
hasAssotiatedPapx = true;
System.out.println("* " + papx);
SprmIterator sprmIt = new SprmIterator(papx.getGrpprl(), 2);
dumpSprms(sprmIt, "** ");
}
}
if (!hasAssotiatedPapx) {
System.out.println("* " + "NO PAPX ASSOTIATED WITH PARAGRAPH!");
}
}
}
}
use of org.apache.poi.hwpf.model.PAPX in project poi by apache.
the class Range method sanityCheck.
/**
* Method for debug purposes. Checks that all resolved elements are inside
* of current range.
*/
public boolean sanityCheck() {
if (_start < 0)
throw new AssertionError();
if (_start > _text.length())
throw new AssertionError();
if (_end < 0)
throw new AssertionError();
if (_end > _text.length())
throw new AssertionError();
if (_start > _end)
throw new AssertionError();
if (_charRangeFound) {
for (int c = _charStart; c < _charEnd; c++) {
CHPX chpx = _characters.get(c);
int left = Math.max(this._start, chpx.getStart());
int right = Math.min(this._end, chpx.getEnd());
if (left >= right)
throw new AssertionError();
}
}
if (_parRangeFound) {
for (int p = _parStart; p < _parEnd; p++) {
PAPX papx = _paragraphs.get(p);
int left = Math.max(this._start, papx.getStart());
int right = Math.min(this._end, papx.getEnd());
if (left >= right)
throw new AssertionError();
}
}
return true;
}
use of org.apache.poi.hwpf.model.PAPX in project poi by apache.
the class Range method delete.
public void delete() {
initAll();
int numSections = _sections.size();
int numRuns = _characters.size();
int numParagraphs = _paragraphs.size();
for (int x = _charStart; x < numRuns; x++) {
CHPX chpx = _characters.get(x);
chpx.adjustForDelete(_start, _end - _start);
}
for (int x = _parStart; x < numParagraphs; x++) {
PAPX papx = _paragraphs.get(x);
// System.err.println("Paragraph " + x + " was " + papx.getStart() +
// " -> " + papx.getEnd());
papx.adjustForDelete(_start, _end - _start);
// System.err.println("Paragraph " + x + " is now " +
// papx.getStart() + " -> " + papx.getEnd());
}
for (int x = _sectionStart; x < numSections; x++) {
SEPX sepx = _sections.get(x);
// System.err.println("Section " + x + " was " + sepx.getStart() +
// " -> " + sepx.getEnd());
sepx.adjustForDelete(_start, _end - _start);
// System.err.println("Section " + x + " is now " + sepx.getStart()
// + " -> " + sepx.getEnd());
}
if (_doc instanceof HWPFDocument) {
((BookmarksImpl) ((HWPFDocument) _doc).getBookmarks()).afterDelete(_start, (_end - _start));
}
_text.delete(_start, _end);
Range parent = _parent.get();
if (parent != null) {
parent.adjustForInsert(-(_end - _start));
}
// update the FIB.CCPText + friends field
adjustFIB(-(_end - _start));
}
use of org.apache.poi.hwpf.model.PAPX in project poi by apache.
the class TestRangeDelete method testDocStructure.
/**
* Test (more "confirm" than test) that we have the general structure that we expect to have.
*/
public void testDocStructure() {
HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range;
Section section;
Paragraph para;
PAPX paraDef;
// First, check overall
range = daDoc.getOverallRange();
assertEquals(1, range.numSections());
assertEquals(5, range.numParagraphs());
// Now, onto just the doc bit
range = daDoc.getRange();
assertEquals(1, range.numSections());
assertEquals(1, daDoc.getSectionTable().getSections().size());
section = range.getSection(0);
assertEquals(5, section.numParagraphs());
para = section.getParagraph(0);
assertEquals(1, para.numCharacterRuns());
assertEquals(introText, para.text());
para = section.getParagraph(1);
assertEquals(5, para.numCharacterRuns());
assertEquals(fillerText, para.text());
paraDef = daDoc.getParagraphTable().getParagraphs().get(2);
assertEquals(132, paraDef.getStart());
assertEquals(400, paraDef.getEnd());
para = section.getParagraph(2);
assertEquals(5, para.numCharacterRuns());
assertEquals(originalText, para.text());
paraDef = daDoc.getParagraphTable().getParagraphs().get(3);
assertEquals(400, paraDef.getStart());
assertEquals(438, paraDef.getEnd());
para = section.getParagraph(3);
assertEquals(1, para.numCharacterRuns());
assertEquals(lastText, para.text());
// Check things match on text length
assertEquals(439, range.text().length());
assertEquals(439, section.text().length());
assertEquals(439, section.getParagraph(0).text().length() + section.getParagraph(1).text().length() + section.getParagraph(2).text().length() + section.getParagraph(3).text().length() + section.getParagraph(4).text().length());
}
Aggregations