Search in sources :

Example 6 with Document

use of org.apache.poi.hslf.record.Document in project poi by apache.

the class TestAddingSlides method test47261.

@Test
public void test47261() throws IOException {
    HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("47261.ppt");
    List<HSLFSlide> slides = ppt.getSlides();
    Document doc = ppt.getDocumentRecord();
    assertNotNull(doc.getSlideSlideListWithText());
    assertEquals(14, ppt.getSlides().size());
    int notesId = slides.get(0).getSlideRecord().getSlideAtom().getNotesID();
    assertTrue(notesId > 0);
    assertNotNull(doc.getNotesSlideListWithText());
    assertEquals(14, doc.getNotesSlideListWithText().getSlideAtomsSets().length);
    // remove all slides, corresponding notes should be removed too
    for (int i = slides.size(); i > 0; i--) {
        ppt.removeSlide(0);
    }
    assertEquals(0, ppt.getSlides().size());
    assertEquals(0, ppt.getNotes().size());
    assertNull(doc.getSlideSlideListWithText());
    assertNull(doc.getNotesSlideListWithText());
    ppt.close();
}
Also used : Document(org.apache.poi.hslf.record.Document) Test(org.junit.Test)

Example 7 with Document

use of org.apache.poi.hslf.record.Document in project poi by apache.

the class HSLFFill method getEscherBSERecord.

@SuppressWarnings("resource")
protected EscherBSERecord getEscherBSERecord(int idx) {
    HSLFSheet sheet = shape.getSheet();
    if (sheet == null) {
        LOG.log(POILogger.DEBUG, "Fill has not yet been assigned to a sheet");
        return null;
    }
    HSLFSlideShow ppt = sheet.getSlideShow();
    Document doc = ppt.getDocumentRecord();
    EscherContainerRecord dggContainer = doc.getPPDrawingGroup().getDggContainer();
    EscherContainerRecord bstore = HSLFShape.getEscherChild(dggContainer, EscherContainerRecord.BSTORE_CONTAINER);
    if (bstore == null) {
        LOG.log(POILogger.DEBUG, "EscherContainerRecord.BSTORE_CONTAINER was not found ");
        return null;
    }
    List<EscherRecord> lst = bstore.getChildRecords();
    return (EscherBSERecord) lst.get(idx - 1);
}
Also used : EscherContainerRecord(org.apache.poi.ddf.EscherContainerRecord) EscherRecord(org.apache.poi.ddf.EscherRecord) Document(org.apache.poi.hslf.record.Document) EscherBSERecord(org.apache.poi.ddf.EscherBSERecord)

Example 8 with Document

use of org.apache.poi.hslf.record.Document in project poi by apache.

the class TestBackground method getFillPictureRefCount.

private int getFillPictureRefCount(HSLFShape shape, HSLFFill fill) {
    AbstractEscherOptRecord opt = shape.getEscherOptRecord();
    EscherSimpleProperty p = HSLFShape.getEscherProperty(opt, EscherProperties.FILL__PATTERNTEXTURE);
    if (p != null) {
        int idx = p.getPropertyValue();
        HSLFSheet sheet = shape.getSheet();
        HSLFSlideShow ppt = sheet.getSlideShow();
        Document doc = ppt.getDocumentRecord();
        EscherContainerRecord dggContainer = doc.getPPDrawingGroup().getDggContainer();
        EscherContainerRecord bstore = HSLFShape.getEscherChild(dggContainer, EscherContainerRecord.BSTORE_CONTAINER);
        List<EscherRecord> lst = bstore.getChildRecords();
        return ((EscherBSERecord) lst.get(idx - 1)).getRef();
    }
    return 0;
}
Also used : EscherSimpleProperty(org.apache.poi.ddf.EscherSimpleProperty) HSLFSheet(org.apache.poi.hslf.usermodel.HSLFSheet) EscherContainerRecord(org.apache.poi.ddf.EscherContainerRecord) EscherRecord(org.apache.poi.ddf.EscherRecord) Document(org.apache.poi.hslf.record.Document) AbstractEscherOptRecord(org.apache.poi.ddf.AbstractEscherOptRecord) HSLFSlideShow(org.apache.poi.hslf.usermodel.HSLFSlideShow) EscherBSERecord(org.apache.poi.ddf.EscherBSERecord)

Example 9 with Document

use of org.apache.poi.hslf.record.Document in project poi by apache.

the class SLWTTextListing method main.

public static void main(String[] args) throws IOException {
    if (args.length < 1) {
        System.err.println("Need to give a filename");
        System.exit(1);
    }
    HSLFSlideShowImpl ss = new HSLFSlideShowImpl(args[0]);
    // Find the documents, and then their SLWT
    Record[] records = ss.getRecords();
    for (int i = 0; i < records.length; i++) {
        if (records[i] instanceof Document) {
            Record docRecord = records[i];
            Record[] docChildren = docRecord.getChildRecords();
            for (int j = 0; j < docChildren.length; j++) {
                if (docChildren[j] instanceof SlideListWithText) {
                    System.out.println("Found SLWT at pos " + j + " in the Document at " + i);
                    System.out.println("  Has " + docChildren[j].getChildRecords().length + " children");
                    // Grab the SlideAtomSet's, which contain
                    //  a SlidePersistAtom and then a bunch of text
                    //  + related records
                    SlideListWithText slwt = (SlideListWithText) docChildren[j];
                    SlideListWithText.SlideAtomsSet[] thisSets = slwt.getSlideAtomsSets();
                    System.out.println("  Has " + thisSets.length + " AtomSets in it");
                    // Loop over the sets, showing what they contain
                    for (int k = 0; k < thisSets.length; k++) {
                        SlidePersistAtom spa = thisSets[k].getSlidePersistAtom();
                        System.out.println("    " + k + " has slide id " + spa.getSlideIdentifier());
                        System.out.println("    " + k + " has ref id " + spa.getRefID());
                        // Loop over the records, printing the text
                        Record[] slwtc = thisSets[k].getSlideRecords();
                        for (int l = 0; l < slwtc.length; l++) {
                            String text = null;
                            if (slwtc[l] instanceof TextBytesAtom) {
                                TextBytesAtom tba = (TextBytesAtom) slwtc[l];
                                text = tba.getText();
                            }
                            if (slwtc[l] instanceof TextCharsAtom) {
                                TextCharsAtom tca = (TextCharsAtom) slwtc[l];
                                text = tca.getText();
                            }
                            if (text != null) {
                                text = text.replace('\r', '\n');
                                System.out.println("        ''" + text + "''");
                            }
                        }
                    }
                }
            }
        }
    }
    ss.close();
}
Also used : SlideListWithText(org.apache.poi.hslf.record.SlideListWithText) SlidePersistAtom(org.apache.poi.hslf.record.SlidePersistAtom) Record(org.apache.poi.hslf.record.Record) TextCharsAtom(org.apache.poi.hslf.record.TextCharsAtom) Document(org.apache.poi.hslf.record.Document) TextBytesAtom(org.apache.poi.hslf.record.TextBytesAtom) HSLFSlideShowImpl(org.apache.poi.hslf.usermodel.HSLFSlideShowImpl)

Example 10 with Document

use of org.apache.poi.hslf.record.Document in project poi by apache.

the class SlideIdListing method main.

public static void main(String[] args) throws IOException {
    if (args.length < 1) {
        System.err.println("Need to give a filename");
        System.exit(1);
    }
    // Create the slideshow object, for normal working with
    HSLFSlideShowImpl hss = new HSLFSlideShowImpl(args[0]);
    HSLFSlideShow ss = new HSLFSlideShow(hss);
    // Grab the base contents
    fileContents = hss.getUnderlyingBytes();
    Record[] records = hss.getRecords();
    Record[] latestRecords = ss.getMostRecentCoreRecords();
    // Grab any records that interest us
    Document document = null;
    for (int i = 0; i < latestRecords.length; i++) {
        if (latestRecords[i] instanceof Document) {
            document = (Document) latestRecords[i];
        }
    }
    System.out.println("");
    // Look for SlidePersistAtoms, and report what they have to
    //  say about possible slide IDs
    SlideListWithText[] slwts = document.getSlideListWithTexts();
    for (int i = 0; i < slwts.length; i++) {
        Record[] cr = slwts[i].getChildRecords();
        for (int j = 0; j < cr.length; j++) {
            if (cr[j] instanceof SlidePersistAtom) {
                SlidePersistAtom spa = (SlidePersistAtom) cr[j];
                System.out.println("SlidePersistAtom knows about slide:");
                System.out.println("\t" + spa.getRefID());
                System.out.println("\t" + spa.getSlideIdentifier());
            }
        }
    }
    System.out.println("");
    // Look for latest core records that are slides or notes
    for (int i = 0; i < latestRecords.length; i++) {
        if (latestRecords[i] instanceof Slide) {
            Slide s = (Slide) latestRecords[i];
            SlideAtom sa = s.getSlideAtom();
            System.out.println("Found the latest version of a slide record:");
            System.out.println("\tCore ID is " + s.getSheetId());
            System.out.println("\t(Core Records count is " + i + ")");
            System.out.println("\tDisk Position is " + s.getLastOnDiskOffset());
            System.out.println("\tMaster ID is " + sa.getMasterID());
            System.out.println("\tNotes ID is " + sa.getNotesID());
        }
    }
    System.out.println("");
    for (int i = 0; i < latestRecords.length; i++) {
        if (latestRecords[i] instanceof Notes) {
            Notes n = (Notes) latestRecords[i];
            NotesAtom na = n.getNotesAtom();
            System.out.println("Found the latest version of a notes record:");
            System.out.println("\tCore ID is " + n.getSheetId());
            System.out.println("\t(Core Records count is " + i + ")");
            System.out.println("\tDisk Position is " + n.getLastOnDiskOffset());
            System.out.println("\tMatching slide is " + na.getSlideID());
        }
    }
    System.out.println("");
    // Find any persist ones first
    int pos = 0;
    for (int i = 0; i < records.length; i++) {
        Record r = records[i];
        if (r.getRecordType() == 6001l) {
            // PersistPtrFullBlock
            System.out.println("Found PersistPtrFullBlock at " + pos + " (" + Integer.toHexString(pos) + ")");
        }
        if (r.getRecordType() == 6002l) {
            // PersistPtrIncrementalBlock
            System.out.println("Found PersistPtrIncrementalBlock at " + pos + " (" + Integer.toHexString(pos) + ")");
            PersistPtrHolder pph = (PersistPtrHolder) r;
            // Check the sheet offsets
            int[] sheetIDs = pph.getKnownSlideIDs();
            Map<Integer, Integer> sheetOffsets = pph.getSlideLocationsLookup();
            for (int j = 0; j < sheetIDs.length; j++) {
                Integer id = sheetIDs[j];
                Integer offset = sheetOffsets.get(id);
                System.out.println("  Knows about sheet " + id);
                System.out.println("    That sheet lives at " + offset);
                Record atPos = findRecordAtPos(offset.intValue());
                System.out.println("    The record at that pos is of type " + atPos.getRecordType());
                System.out.println("    The record at that pos has class " + atPos.getClass().getName());
                if (!(atPos instanceof PositionDependentRecord)) {
                    System.out.println("    ** The record class isn't position aware! **");
                }
            }
        }
        // Increase the position by the on disk size
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        r.writeOut(baos);
        pos += baos.size();
    }
    ss.close();
    System.out.println("");
}
Also used : SlideListWithText(org.apache.poi.hslf.record.SlideListWithText) SlidePersistAtom(org.apache.poi.hslf.record.SlidePersistAtom) PersistPtrHolder(org.apache.poi.hslf.record.PersistPtrHolder) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Document(org.apache.poi.hslf.record.Document) HSLFSlideShow(org.apache.poi.hslf.usermodel.HSLFSlideShow) HSLFSlideShowImpl(org.apache.poi.hslf.usermodel.HSLFSlideShowImpl) NotesAtom(org.apache.poi.hslf.record.NotesAtom) PositionDependentRecord(org.apache.poi.hslf.record.PositionDependentRecord) SlideAtom(org.apache.poi.hslf.record.SlideAtom) Slide(org.apache.poi.hslf.record.Slide) Record(org.apache.poi.hslf.record.Record) PositionDependentRecord(org.apache.poi.hslf.record.PositionDependentRecord) Notes(org.apache.poi.hslf.record.Notes)

Aggregations

Document (org.apache.poi.hslf.record.Document)10 EscherContainerRecord (org.apache.poi.ddf.EscherContainerRecord)5 Record (org.apache.poi.hslf.record.Record)5 AbstractEscherOptRecord (org.apache.poi.ddf.AbstractEscherOptRecord)4 EscherBSERecord (org.apache.poi.ddf.EscherBSERecord)4 EscherRecord (org.apache.poi.ddf.EscherRecord)4 SlideListWithText (org.apache.poi.hslf.record.SlideListWithText)4 HSLFSlideShowImpl (org.apache.poi.hslf.usermodel.HSLFSlideShowImpl)3 EscherSimpleProperty (org.apache.poi.ddf.EscherSimpleProperty)2 SlidePersistAtom (org.apache.poi.hslf.record.SlidePersistAtom)2 HSLFSlideShow (org.apache.poi.hslf.usermodel.HSLFSlideShow)2 DrawPaint (org.apache.poi.sl.draw.DrawPaint)2 Test (org.junit.Test)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 EscherSpRecord (org.apache.poi.ddf.EscherSpRecord)1 ExControl (org.apache.poi.hslf.record.ExControl)1 ExObjList (org.apache.poi.hslf.record.ExObjList)1 HSLFEscherClientDataRecord (org.apache.poi.hslf.record.HSLFEscherClientDataRecord)1 Notes (org.apache.poi.hslf.record.Notes)1 NotesAtom (org.apache.poi.hslf.record.NotesAtom)1