123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.hslf.model;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertFalse;
- import static org.junit.Assert.assertNull;
- import static org.junit.Assert.assertTrue;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
-
- import org.apache.poi.POIDataSamples;
- import org.apache.poi.hslf.HSLFTestDataSamples;
- import org.apache.poi.hslf.usermodel.HSLFSlide;
- import org.apache.poi.hslf.usermodel.HSLFSlideShow;
- import org.junit.Test;
-
- /**
- * Test {@link org.apache.poi.hslf.model.HeadersFooters} object
- */
- public final class TestHeadersFooters
- {
-
- private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
-
- @Test
- public void testRead() throws IOException {
- InputStream is = _slTests.openResourceAsStream("headers_footers.ppt");
- HSLFSlideShow ppt = new HSLFSlideShow(is);
- is.close();
-
- HeadersFooters slideHdd = ppt.getSlideHeadersFooters();
- assertTrue(slideHdd.isFooterVisible());
- assertEquals("Global Slide Footer", slideHdd.getFooterText());
- assertTrue(slideHdd.isSlideNumberVisible());
- assertFalse(slideHdd.isHeaderVisible());
- assertNull(slideHdd.getHeaderText());
- assertFalse(slideHdd.isUserDateVisible());
- assertNull(slideHdd.getDateTimeText());
-
-
- HeadersFooters notesHdd = ppt.getNotesHeadersFooters();
- assertTrue(notesHdd.isFooterVisible());
- assertEquals("Notes Footer", notesHdd.getFooterText());
- assertTrue(notesHdd.isHeaderVisible());
- assertEquals("Notes Header", notesHdd.getHeaderText());
- assertTrue(notesHdd.isUserDateVisible());
- assertNull(notesHdd.getDateTimeText());
-
- List<HSLFSlide> slide = ppt.getSlides();
- //the first slide uses presentation-scope headers / footers
- HeadersFooters hd1 = slide.get(0).getHeadersFooters();
- assertEquals(slideHdd.isFooterVisible(), hd1.isFooterVisible());
- assertEquals(slideHdd.getFooterText(), hd1.getFooterText());
- assertEquals(slideHdd.isSlideNumberVisible(), hd1.isSlideNumberVisible());
- assertEquals(slideHdd.isHeaderVisible(), hd1.isHeaderVisible());
- assertEquals(slideHdd.getHeaderText(), hd1.getHeaderText());
- assertEquals(slideHdd.isUserDateVisible(), hd1.isUserDateVisible());
- assertEquals(slideHdd.getDateTimeText(), hd1.getDateTimeText());
-
- //the first slide uses per-slide headers / footers
- HeadersFooters hd2 = slide.get(1).getHeadersFooters();
- assertEquals(true, hd2.isFooterVisible());
- assertEquals("per-slide footer", hd2.getFooterText());
- assertEquals(true, hd2.isUserDateVisible());
- assertEquals("custom date format", hd2.getDateTimeText());
-
- ppt.close();
- }
-
- /**
- * If Headers / Footers are not set, all the getters should return <code>false</code> or <code>null</code>
- */
- @Test
- public void testReadNoHeadersFooters() throws Exception {
- InputStream is = _slTests.openResourceAsStream("basic_test_ppt_file.ppt");
- HSLFSlideShow ppt = new HSLFSlideShow(is);
- is.close();
-
- HeadersFooters slideHdd = ppt.getSlideHeadersFooters();
- assertFalse(slideHdd.isFooterVisible());
- assertNull(slideHdd.getFooterText());
- assertFalse(slideHdd.isSlideNumberVisible());
- assertFalse(slideHdd.isHeaderVisible());
- assertNull(slideHdd.getHeaderText());
- assertFalse(slideHdd.isUserDateVisible());
- assertNull(slideHdd.getDateTimeText());
-
-
- HeadersFooters notesHdd = ppt.getNotesHeadersFooters();
- assertFalse(notesHdd.isFooterVisible());
- assertNull(notesHdd.getFooterText());
- assertFalse(notesHdd.isHeaderVisible());
- assertNull(notesHdd.getHeaderText());
- assertFalse(notesHdd.isUserDateVisible());
- assertNull(notesHdd.getDateTimeText());
-
- for(HSLFSlide s : ppt.getSlides()) {
- HeadersFooters hd1 = s.getHeadersFooters();
- assertFalse(hd1.isFooterVisible());
- assertNull(hd1.getFooterText());
- assertFalse(hd1.isHeaderVisible());
- assertNull(hd1.getHeaderText());
- assertFalse(hd1.isUserDateVisible());
- assertNull(hd1.getDateTimeText());
- }
-
- ppt.close();
- }
-
- /**
- * Test extraction of headers / footers from PPTs saved in Office 2007
- */
- @Test
- public void testRead2007() throws IOException {
- InputStream is = _slTests.openResourceAsStream("headers_footers_2007.ppt");
- HSLFSlideShow ppt = new HSLFSlideShow(is);
- is.close();
-
- HeadersFooters slideHdd = ppt.getSlideHeadersFooters();
- assertTrue(slideHdd.isFooterVisible());
- assertEquals("THE FOOTER TEXT", slideHdd.getFooterText());
- assertTrue(slideHdd.isSlideNumberVisible());
- assertFalse(slideHdd.isHeaderVisible());
- assertNull(slideHdd.getHeaderText());
- assertTrue(slideHdd.isUserDateVisible());
- assertEquals("Wednesday, August 06, 2008", slideHdd.getDateTimeText());
-
-
- HeadersFooters notesHdd = ppt.getNotesHeadersFooters();
- assertTrue(notesHdd.isFooterVisible());
- assertEquals("THE NOTES FOOTER TEXT", notesHdd.getFooterText());
- assertTrue(notesHdd.isHeaderVisible());
- assertEquals("THE NOTES HEADER TEXT", notesHdd.getHeaderText());
- assertTrue(notesHdd.isUserDateVisible());
- assertTrue(notesHdd.isDateTimeVisible());
- //TODO: depending on the formatId getDateTimeText() should return formatted date
- //assertEquals("08/12/08", notesHdd.getDateTimeText());
-
- //per-slide headers / footers
- List<HSLFSlide> slide = ppt.getSlides();
- //the first slide uses presentation-scope headers / footers
- HeadersFooters hd1 = slide.get(0).getHeadersFooters();
- assertTrue(hd1.isFooterVisible());
- assertEquals("THE FOOTER TEXT", hd1.getFooterText());
- assertTrue(hd1.isSlideNumberVisible());
- assertFalse(hd1.isHeaderVisible());
- assertNull(hd1.getHeaderText());
- assertTrue(hd1.isUserDateVisible());
- assertTrue(hd1.isDateTimeVisible());
- assertEquals("Wednesday, August 06, 2008", hd1.getDateTimeText());
-
- //the second slide uses custom per-slide headers / footers
- HeadersFooters hd2 = slide.get(1).getHeadersFooters();
- assertTrue(hd2.isFooterVisible());
- assertEquals("THE FOOTER TEXT FOR SLIDE 2", hd2.getFooterText());
- assertTrue(hd2.isSlideNumberVisible());
- assertFalse(hd2.isHeaderVisible());
- assertNull(hd2.getHeaderText());
- assertTrue(hd2.isUserDateVisible());
- assertTrue(hd2.isDateTimeVisible());
- assertEquals("August 06, 2008", hd2.getDateTimeText());
-
- //the third slide uses per-slide headers / footers
- HeadersFooters hd3 = slide.get(2).getHeadersFooters();
- assertTrue(hd3.isFooterVisible());
- assertEquals("THE FOOTER TEXT", hd3.getFooterText());
- assertTrue(hd3.isSlideNumberVisible());
- assertFalse(hd3.isHeaderVisible());
- assertNull(hd3.getHeaderText());
- assertTrue(hd3.isUserDateVisible());
- assertTrue(hd3.isDateTimeVisible());
- assertEquals("Wednesday, August 06, 2008", hd3.getDateTimeText());
-
- ppt.close();
- }
-
- @Test
- public void testCreateSlideFooters() throws IOException {
- HSLFSlideShow ppt1 = new HSLFSlideShow();
- HeadersFooters hdd = ppt1.getSlideHeadersFooters();
- hdd.setFootersText("My slide footer");
- hdd.setSlideNumberVisible(true);
-
- HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1);
- HeadersFooters hdd2 = ppt2.getSlideHeadersFooters();
- assertTrue(hdd2.isSlideNumberVisible());
- assertTrue(hdd2.isFooterVisible());
- assertEquals("My slide footer", hdd2.getFooterText());
-
- ppt2.close();
- ppt1.close();
- }
-
- @Test
- public void testCreateNotesFooters() throws IOException {
- HSLFSlideShow ppt1 = new HSLFSlideShow();
- HeadersFooters hdd = ppt1.getNotesHeadersFooters();
- hdd.setFootersText("My notes footer");
- hdd.setHeaderText("My notes header");
- hdd.setSlideNumberVisible(true);
-
- HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1);
- HeadersFooters hdd2 = ppt2.getNotesHeadersFooters();
- assertTrue(hdd2.isSlideNumberVisible());
- assertTrue(hdd2.isFooterVisible());
- assertEquals("My notes footer", hdd2.getFooterText());
- assertTrue(hdd2.isHeaderVisible());
- assertEquals("My notes header", hdd2.getHeaderText());
-
- ppt2.close();
- ppt1.close();
- }
- }
|