You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TestXSSFPrintSetup.java 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  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.xssf.usermodel;
  16. import static org.junit.jupiter.api.Assertions.assertEquals;
  17. import static org.junit.jupiter.api.Assertions.assertFalse;
  18. import static org.junit.jupiter.api.Assertions.assertTrue;
  19. import org.apache.poi.ss.usermodel.PageOrder;
  20. import org.apache.poi.ss.usermodel.PaperSize;
  21. import org.apache.poi.ss.usermodel.PrintCellComments;
  22. import org.apache.poi.ss.usermodel.PrintOrientation;
  23. import org.apache.poi.xssf.XSSFITestDataProvider;
  24. import org.junit.jupiter.api.Disabled;
  25. import org.junit.jupiter.api.Test;
  26. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins;
  27. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageSetup;
  28. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
  29. import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellComments;
  30. import org.openxmlformats.schemas.spreadsheetml.x2006.main.STOrientation;
  31. import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPageOrder;
  32. /**
  33. * Tests for {@link XSSFPrintSetup}
  34. */
  35. class TestXSSFPrintSetup {
  36. @Test
  37. void testSetGetPaperSize() {
  38. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  39. CTPageSetup pSetup = worksheet.addNewPageSetup();
  40. pSetup.setPaperSize(9);
  41. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  42. assertEquals(PaperSize.A4_PAPER, printSetup.getPaperSizeEnum());
  43. assertEquals(9, printSetup.getPaperSize());
  44. printSetup.setPaperSize(PaperSize.A3_PAPER);
  45. assertEquals(8, pSetup.getPaperSize());
  46. }
  47. @Test
  48. void testSetGetScale() {
  49. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  50. CTPageSetup pSetup = worksheet.addNewPageSetup();
  51. pSetup.setScale(9);
  52. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  53. assertEquals(9, printSetup.getScale());
  54. printSetup.setScale((short) 100);
  55. assertEquals(100, pSetup.getScale());
  56. }
  57. @Test
  58. void testSetGetPageStart() {
  59. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  60. CTPageSetup pSetup = worksheet.addNewPageSetup();
  61. pSetup.setFirstPageNumber(9);
  62. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  63. assertEquals(9, printSetup.getPageStart());
  64. printSetup.setPageStart((short) 1);
  65. assertEquals(1, pSetup.getFirstPageNumber());
  66. }
  67. @Test
  68. void testSetGetFitWidthHeight() {
  69. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  70. CTPageSetup pSetup = worksheet.addNewPageSetup();
  71. pSetup.setFitToWidth(50);
  72. pSetup.setFitToHeight(99);
  73. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  74. assertEquals(50, printSetup.getFitWidth());
  75. assertEquals(99, printSetup.getFitHeight());
  76. printSetup.setFitWidth((short) 66);
  77. printSetup.setFitHeight((short) 80);
  78. assertEquals(66, pSetup.getFitToWidth());
  79. assertEquals(80, pSetup.getFitToHeight());
  80. }
  81. @Test
  82. void testSetGetLeftToRight() {
  83. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  84. CTPageSetup pSetup = worksheet.addNewPageSetup();
  85. pSetup.setPageOrder(STPageOrder.DOWN_THEN_OVER);
  86. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  87. assertFalse(printSetup.getLeftToRight());
  88. printSetup.setLeftToRight(true);
  89. assertEquals(PageOrder.OVER_THEN_DOWN.getValue(), pSetup.getPageOrder().intValue());
  90. }
  91. @Test
  92. void testSetGetOrientation() {
  93. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  94. CTPageSetup pSetup = worksheet.addNewPageSetup();
  95. pSetup.setOrientation(STOrientation.PORTRAIT);
  96. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  97. assertEquals(PrintOrientation.PORTRAIT, printSetup.getOrientation());
  98. assertFalse(printSetup.getLandscape());
  99. assertFalse(printSetup.getNoOrientation());
  100. printSetup.setOrientation(PrintOrientation.LANDSCAPE);
  101. assertEquals(pSetup.getOrientation().intValue(), printSetup.getOrientation().getValue());
  102. assertTrue(printSetup.getLandscape());
  103. assertFalse(printSetup.getNoOrientation());
  104. }
  105. @Test
  106. void testSetGetValidSettings() {
  107. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  108. CTPageSetup pSetup = worksheet.addNewPageSetup();
  109. pSetup.setUsePrinterDefaults(false);
  110. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  111. assertFalse(printSetup.getValidSettings());
  112. printSetup.setValidSettings(true);
  113. assertTrue(pSetup.getUsePrinterDefaults());
  114. }
  115. @Test
  116. void testSetGetNoColor() {
  117. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  118. CTPageSetup pSetup = worksheet.addNewPageSetup();
  119. pSetup.setBlackAndWhite(false);
  120. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  121. assertFalse(printSetup.getNoColor());
  122. printSetup.setNoColor(true);
  123. assertTrue(pSetup.getBlackAndWhite());
  124. }
  125. @Test
  126. void testSetGetDraft() {
  127. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  128. CTPageSetup pSetup = worksheet.addNewPageSetup();
  129. pSetup.setDraft(false);
  130. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  131. assertFalse(printSetup.getDraft());
  132. printSetup.setDraft(true);
  133. assertTrue(pSetup.getDraft());
  134. }
  135. @Test
  136. void testSetGetNotes() {
  137. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  138. CTPageSetup pSetup = worksheet.addNewPageSetup();
  139. pSetup.setCellComments(STCellComments.NONE);
  140. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  141. assertFalse(printSetup.getNotes());
  142. printSetup.setNotes(true);
  143. assertEquals(PrintCellComments.AS_DISPLAYED.getValue(), pSetup.getCellComments().intValue());
  144. }
  145. @Test
  146. void testSetGetUsePage() {
  147. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  148. CTPageSetup pSetup = worksheet.addNewPageSetup();
  149. pSetup.setUseFirstPageNumber(false);
  150. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  151. assertFalse(printSetup.getUsePage());
  152. printSetup.setUsePage(true);
  153. assertTrue(pSetup.getUseFirstPageNumber());
  154. }
  155. @Test
  156. void testSetGetHVResolution() {
  157. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  158. CTPageSetup pSetup = worksheet.addNewPageSetup();
  159. pSetup.setHorizontalDpi(120);
  160. pSetup.setVerticalDpi(100);
  161. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  162. assertEquals(120, printSetup.getHResolution());
  163. assertEquals(100, printSetup.getVResolution());
  164. printSetup.setHResolution((short) 150);
  165. printSetup.setVResolution((short) 130);
  166. assertEquals(150, pSetup.getHorizontalDpi());
  167. assertEquals(130, pSetup.getVerticalDpi());
  168. }
  169. @Test
  170. void testSetGetHeaderFooterMargin() {
  171. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  172. CTPageMargins pMargins = worksheet.addNewPageMargins();
  173. pMargins.setHeader(1.5);
  174. pMargins.setFooter(2);
  175. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  176. assertEquals(1.5, printSetup.getHeaderMargin(), 0.0);
  177. assertEquals(2.0, printSetup.getFooterMargin(), 0.0);
  178. printSetup.setHeaderMargin(5);
  179. printSetup.setFooterMargin(3.5);
  180. assertEquals(5.0, pMargins.getHeader(), 0.0);
  181. assertEquals(3.5, pMargins.getFooter(), 0.0);
  182. }
  183. @Test
  184. void testSetGetMargins() {
  185. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  186. CTPageMargins pMargins = worksheet.addNewPageMargins();
  187. pMargins.setTop(5.3);
  188. pMargins.setBottom(1.5);
  189. pMargins.setLeft(2);
  190. pMargins.setRight(3.2);
  191. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  192. assertEquals(5.3, printSetup.getTopMargin(), 0.0);
  193. assertEquals(1.5, printSetup.getBottomMargin(), 0.0);
  194. assertEquals(2, printSetup.getLeftMargin(), 0.0);
  195. assertEquals(3.2, printSetup.getRightMargin(), 0.0);
  196. printSetup.setTopMargin(9);
  197. printSetup.setBottomMargin(6.4);
  198. printSetup.setLeftMargin(7.8);
  199. printSetup.setRightMargin(8.1);
  200. assertEquals(9, pMargins.getTop(), 0.0);
  201. assertEquals(6.4, pMargins.getBottom(), 0.0);
  202. assertEquals(7.8, pMargins.getLeft(), 0.0);
  203. assertEquals(8.1, pMargins.getRight(), 0.0);
  204. }
  205. @Test
  206. void testSetGetCopies() {
  207. CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
  208. CTPageSetup pSetup = worksheet.addNewPageSetup();
  209. pSetup.setCopies(9);
  210. XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
  211. assertEquals(9, printSetup.getCopies());
  212. printSetup.setCopies((short) 15);
  213. assertEquals(15, pSetup.getCopies());
  214. }
  215. @Test
  216. void testSetSaveRead() throws Exception {
  217. XSSFWorkbook wb = new XSSFWorkbook();
  218. XSSFSheet s1 = wb.createSheet();
  219. assertFalse(s1.getCTWorksheet().isSetPageSetup());
  220. assertTrue(s1.getCTWorksheet().isSetPageMargins());
  221. XSSFPrintSetup print = s1.getPrintSetup();
  222. assertTrue(s1.getCTWorksheet().isSetPageSetup());
  223. assertTrue(s1.getCTWorksheet().isSetPageMargins());
  224. print.setCopies((short)3);
  225. print.setLandscape(true);
  226. assertEquals(3, print.getCopies());
  227. assertTrue(print.getLandscape());
  228. XSSFSheet s2 = wb.createSheet();
  229. assertFalse(s2.getCTWorksheet().isSetPageSetup());
  230. assertTrue(s2.getCTWorksheet().isSetPageMargins());
  231. // Round trip and check
  232. XSSFWorkbook wbBack = XSSFITestDataProvider.instance.writeOutAndReadBack(wb);
  233. s1 = wbBack.getSheetAt(0);
  234. s2 = wbBack.getSheetAt(1);
  235. assertTrue(s1.getCTWorksheet().isSetPageSetup());
  236. assertTrue(s1.getCTWorksheet().isSetPageMargins());
  237. assertFalse(s2.getCTWorksheet().isSetPageSetup());
  238. assertTrue(s2.getCTWorksheet().isSetPageMargins());
  239. print = s1.getPrintSetup();
  240. assertEquals(3, print.getCopies());
  241. assertTrue(print.getLandscape());
  242. wb.close();
  243. }
  244. /**
  245. * Open a file with print settings, save and check.
  246. * Then, change, save, read, check
  247. */
  248. @Disabled
  249. void testRoundTrip() {
  250. // TODO
  251. }
  252. @Test
  253. void testSetLandscapeFalse() {
  254. XSSFPrintSetup ps = new XSSFPrintSetup(CTWorksheet.Factory.newInstance());
  255. assertFalse(ps.getLandscape());
  256. ps.setLandscape(true);
  257. assertTrue(ps.getLandscape());
  258. ps.setLandscape(false);
  259. assertFalse(ps.getLandscape());
  260. }
  261. @Test
  262. void testSetLeftToRight() {
  263. XSSFPrintSetup ps = new XSSFPrintSetup(CTWorksheet.Factory.newInstance());
  264. assertFalse(ps.getLeftToRight());
  265. ps.setLeftToRight(true);
  266. assertTrue(ps.getLeftToRight());
  267. ps.setLeftToRight(false);
  268. assertFalse(ps.getLeftToRight());
  269. }
  270. }