Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

TestHeadersFooters.java 9.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. /* ====================================================================
  2. Licensed to the Apache Software Foundation (ASF) under one or more
  3. contributor license agreements. See the NOTICE file distributed with
  4. this work for additional information regarding copyright ownership.
  5. The ASF licenses this file to You under the Apache License, Version 2.0
  6. (the "License"); you may not use this file except in compliance with
  7. the License. You may obtain a copy of the License at
  8. http://www.apache.org/licenses/LICENSE-2.0
  9. Unless required by applicable law or agreed to in writing, software
  10. distributed under the License is distributed on an "AS IS" BASIS,
  11. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. See the License for the specific language governing permissions and
  13. limitations under the License.
  14. ==================================================================== */
  15. package org.apache.poi.hslf.model;
  16. import static org.junit.Assert.assertEquals;
  17. import static org.junit.Assert.assertFalse;
  18. import static org.junit.Assert.assertNull;
  19. import static org.junit.Assert.assertTrue;
  20. import java.io.IOException;
  21. import java.io.InputStream;
  22. import java.util.List;
  23. import org.apache.poi.POIDataSamples;
  24. import org.apache.poi.hslf.HSLFTestDataSamples;
  25. import org.apache.poi.hslf.usermodel.HSLFSlide;
  26. import org.apache.poi.hslf.usermodel.HSLFSlideShow;
  27. import org.junit.Test;
  28. /**
  29. * Test {@link org.apache.poi.hslf.model.HeadersFooters} object
  30. */
  31. public final class TestHeadersFooters
  32. {
  33. private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
  34. @Test
  35. public void testRead() throws IOException {
  36. InputStream is = _slTests.openResourceAsStream("headers_footers.ppt");
  37. HSLFSlideShow ppt = new HSLFSlideShow(is);
  38. is.close();
  39. HeadersFooters slideHdd = ppt.getSlideHeadersFooters();
  40. assertTrue(slideHdd.isFooterVisible());
  41. assertEquals("Global Slide Footer", slideHdd.getFooterText());
  42. assertTrue(slideHdd.isSlideNumberVisible());
  43. assertFalse(slideHdd.isHeaderVisible());
  44. assertNull(slideHdd.getHeaderText());
  45. assertFalse(slideHdd.isUserDateVisible());
  46. assertNull(slideHdd.getDateTimeText());
  47. HeadersFooters notesHdd = ppt.getNotesHeadersFooters();
  48. assertTrue(notesHdd.isFooterVisible());
  49. assertEquals("Notes Footer", notesHdd.getFooterText());
  50. assertTrue(notesHdd.isHeaderVisible());
  51. assertEquals("Notes Header", notesHdd.getHeaderText());
  52. assertTrue(notesHdd.isUserDateVisible());
  53. assertNull(notesHdd.getDateTimeText());
  54. List<HSLFSlide> slide = ppt.getSlides();
  55. //the first slide uses presentation-scope headers / footers
  56. HeadersFooters hd1 = slide.get(0).getHeadersFooters();
  57. assertEquals(slideHdd.isFooterVisible(), hd1.isFooterVisible());
  58. assertEquals(slideHdd.getFooterText(), hd1.getFooterText());
  59. assertEquals(slideHdd.isSlideNumberVisible(), hd1.isSlideNumberVisible());
  60. assertEquals(slideHdd.isHeaderVisible(), hd1.isHeaderVisible());
  61. assertEquals(slideHdd.getHeaderText(), hd1.getHeaderText());
  62. assertEquals(slideHdd.isUserDateVisible(), hd1.isUserDateVisible());
  63. assertEquals(slideHdd.getDateTimeText(), hd1.getDateTimeText());
  64. //the first slide uses per-slide headers / footers
  65. HeadersFooters hd2 = slide.get(1).getHeadersFooters();
  66. assertEquals(true, hd2.isFooterVisible());
  67. assertEquals("per-slide footer", hd2.getFooterText());
  68. assertEquals(true, hd2.isUserDateVisible());
  69. assertEquals("custom date format", hd2.getDateTimeText());
  70. ppt.close();
  71. }
  72. /**
  73. * If Headers / Footers are not set, all the getters should return <code>false</code> or <code>null</code>
  74. */
  75. @Test
  76. public void testReadNoHeadersFooters() throws Exception {
  77. InputStream is = _slTests.openResourceAsStream("basic_test_ppt_file.ppt");
  78. HSLFSlideShow ppt = new HSLFSlideShow(is);
  79. is.close();
  80. HeadersFooters slideHdd = ppt.getSlideHeadersFooters();
  81. assertFalse(slideHdd.isFooterVisible());
  82. assertNull(slideHdd.getFooterText());
  83. assertFalse(slideHdd.isSlideNumberVisible());
  84. assertFalse(slideHdd.isHeaderVisible());
  85. assertNull(slideHdd.getHeaderText());
  86. assertFalse(slideHdd.isUserDateVisible());
  87. assertNull(slideHdd.getDateTimeText());
  88. HeadersFooters notesHdd = ppt.getNotesHeadersFooters();
  89. assertFalse(notesHdd.isFooterVisible());
  90. assertNull(notesHdd.getFooterText());
  91. assertFalse(notesHdd.isHeaderVisible());
  92. assertNull(notesHdd.getHeaderText());
  93. assertFalse(notesHdd.isUserDateVisible());
  94. assertNull(notesHdd.getDateTimeText());
  95. for(HSLFSlide s : ppt.getSlides()) {
  96. HeadersFooters hd1 = s.getHeadersFooters();
  97. assertFalse(hd1.isFooterVisible());
  98. assertNull(hd1.getFooterText());
  99. assertFalse(hd1.isHeaderVisible());
  100. assertNull(hd1.getHeaderText());
  101. assertFalse(hd1.isUserDateVisible());
  102. assertNull(hd1.getDateTimeText());
  103. }
  104. ppt.close();
  105. }
  106. /**
  107. * Test extraction of headers / footers from PPTs saved in Office 2007
  108. */
  109. @Test
  110. public void testRead2007() throws IOException {
  111. InputStream is = _slTests.openResourceAsStream("headers_footers_2007.ppt");
  112. HSLFSlideShow ppt = new HSLFSlideShow(is);
  113. is.close();
  114. HeadersFooters slideHdd = ppt.getSlideHeadersFooters();
  115. assertTrue(slideHdd.isFooterVisible());
  116. assertEquals("THE FOOTER TEXT", slideHdd.getFooterText());
  117. assertTrue(slideHdd.isSlideNumberVisible());
  118. assertFalse(slideHdd.isHeaderVisible());
  119. assertNull(slideHdd.getHeaderText());
  120. assertTrue(slideHdd.isUserDateVisible());
  121. assertEquals("Wednesday, August 06, 2008", slideHdd.getDateTimeText());
  122. HeadersFooters notesHdd = ppt.getNotesHeadersFooters();
  123. assertTrue(notesHdd.isFooterVisible());
  124. assertEquals("THE NOTES FOOTER TEXT", notesHdd.getFooterText());
  125. assertTrue(notesHdd.isHeaderVisible());
  126. assertEquals("THE NOTES HEADER TEXT", notesHdd.getHeaderText());
  127. assertTrue(notesHdd.isUserDateVisible());
  128. assertTrue(notesHdd.isDateTimeVisible());
  129. //TODO: depending on the formatId getDateTimeText() should return formatted date
  130. //assertEquals("08/12/08", notesHdd.getDateTimeText());
  131. //per-slide headers / footers
  132. List<HSLFSlide> slide = ppt.getSlides();
  133. //the first slide uses presentation-scope headers / footers
  134. HeadersFooters hd1 = slide.get(0).getHeadersFooters();
  135. assertTrue(hd1.isFooterVisible());
  136. assertEquals("THE FOOTER TEXT", hd1.getFooterText());
  137. assertTrue(hd1.isSlideNumberVisible());
  138. assertFalse(hd1.isHeaderVisible());
  139. assertNull(hd1.getHeaderText());
  140. assertTrue(hd1.isUserDateVisible());
  141. assertTrue(hd1.isDateTimeVisible());
  142. assertEquals("Wednesday, August 06, 2008", hd1.getDateTimeText());
  143. //the second slide uses custom per-slide headers / footers
  144. HeadersFooters hd2 = slide.get(1).getHeadersFooters();
  145. assertTrue(hd2.isFooterVisible());
  146. assertEquals("THE FOOTER TEXT FOR SLIDE 2", hd2.getFooterText());
  147. assertTrue(hd2.isSlideNumberVisible());
  148. assertFalse(hd2.isHeaderVisible());
  149. assertNull(hd2.getHeaderText());
  150. assertTrue(hd2.isUserDateVisible());
  151. assertTrue(hd2.isDateTimeVisible());
  152. assertEquals("August 06, 2008", hd2.getDateTimeText());
  153. //the third slide uses per-slide headers / footers
  154. HeadersFooters hd3 = slide.get(2).getHeadersFooters();
  155. assertTrue(hd3.isFooterVisible());
  156. assertEquals("THE FOOTER TEXT", hd3.getFooterText());
  157. assertTrue(hd3.isSlideNumberVisible());
  158. assertFalse(hd3.isHeaderVisible());
  159. assertNull(hd3.getHeaderText());
  160. assertTrue(hd3.isUserDateVisible());
  161. assertTrue(hd3.isDateTimeVisible());
  162. assertEquals("Wednesday, August 06, 2008", hd3.getDateTimeText());
  163. ppt.close();
  164. }
  165. @Test
  166. public void testCreateSlideFooters() throws IOException {
  167. HSLFSlideShow ppt1 = new HSLFSlideShow();
  168. HeadersFooters hdd = ppt1.getSlideHeadersFooters();
  169. hdd.setFootersText("My slide footer");
  170. hdd.setSlideNumberVisible(true);
  171. HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1);
  172. HeadersFooters hdd2 = ppt2.getSlideHeadersFooters();
  173. assertTrue(hdd2.isSlideNumberVisible());
  174. assertTrue(hdd2.isFooterVisible());
  175. assertEquals("My slide footer", hdd2.getFooterText());
  176. ppt2.close();
  177. ppt1.close();
  178. }
  179. @Test
  180. public void testCreateNotesFooters() throws IOException {
  181. HSLFSlideShow ppt1 = new HSLFSlideShow();
  182. HeadersFooters hdd = ppt1.getNotesHeadersFooters();
  183. hdd.setFootersText("My notes footer");
  184. hdd.setHeaderText("My notes header");
  185. hdd.setSlideNumberVisible(true);
  186. HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1);
  187. HeadersFooters hdd2 = ppt2.getNotesHeadersFooters();
  188. assertTrue(hdd2.isSlideNumberVisible());
  189. assertTrue(hdd2.isFooterVisible());
  190. assertEquals("My notes footer", hdd2.getFooterText());
  191. assertTrue(hdd2.isHeaderVisible());
  192. assertEquals("My notes header", hdd2.getHeaderText());
  193. ppt2.close();
  194. ppt1.close();
  195. }
  196. }