Search in sources :

Example 6 with PAPX

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");
    }
}
Also used : HWPFDocument(org.apache.poi.hwpf.HWPFDocument) SprmIterator(org.apache.poi.hwpf.sprm.SprmIterator) PlexOfCps(org.apache.poi.hwpf.model.PlexOfCps) ArrayList(java.util.ArrayList) PAPFormattedDiskPage(org.apache.poi.hwpf.model.PAPFormattedDiskPage) PAPX(org.apache.poi.hwpf.model.PAPX) GenericPropertyNode(org.apache.poi.hwpf.model.GenericPropertyNode) Paragraph(org.apache.poi.hwpf.usermodel.Paragraph)

Example 7 with PAPX

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!");
            }
        }
    }
}
Also used : SprmIterator(org.apache.poi.hwpf.sprm.SprmIterator) PAPX(org.apache.poi.hwpf.model.PAPX) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 8 with PAPX

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;
}
Also used : CHPX(org.apache.poi.hwpf.model.CHPX) PAPX(org.apache.poi.hwpf.model.PAPX)

Example 9 with PAPX

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));
}
Also used : HWPFDocument(org.apache.poi.hwpf.HWPFDocument) CHPX(org.apache.poi.hwpf.model.CHPX) PAPX(org.apache.poi.hwpf.model.PAPX) SEPX(org.apache.poi.hwpf.model.SEPX)

Example 10 with PAPX

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());
}
Also used : HWPFDocument(org.apache.poi.hwpf.HWPFDocument) PAPX(org.apache.poi.hwpf.model.PAPX)

Aggregations

PAPX (org.apache.poi.hwpf.model.PAPX)10 HWPFDocument (org.apache.poi.hwpf.HWPFDocument)3 CHPX (org.apache.poi.hwpf.model.CHPX)3 StyleSheet (org.apache.poi.hwpf.model.StyleSheet)2 SprmBuffer (org.apache.poi.hwpf.sprm.SprmBuffer)2 SprmIterator (org.apache.poi.hwpf.sprm.SprmIterator)2 ArrayList (java.util.ArrayList)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 GenericPropertyNode (org.apache.poi.hwpf.model.GenericPropertyNode)1 PAPFormattedDiskPage (org.apache.poi.hwpf.model.PAPFormattedDiskPage)1 PlexOfCps (org.apache.poi.hwpf.model.PlexOfCps)1 SEPX (org.apache.poi.hwpf.model.SEPX)1 Paragraph (org.apache.poi.hwpf.usermodel.Paragraph)1