PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.7.1
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.7.1
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpspreadsheet / src / PhpSpreadsheet / Reader / Xlsx / PageSetup.php

PageSetup.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.7.1, at vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/PageSetup.php

151 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace PhpOffice\PhpSpreadsheet\Reader\Xlsx;
4
5 use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
6 use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
7
8 class PageSetup extends BaseParserClass
9 {
10 private $worksheet;
11
12 private $worksheetXml;
13
14 public function __construct(Worksheet $workSheet, \SimpleXMLElement $worksheetXml = null)
15 {
16 $this->worksheet = $workSheet;
17 $this->worksheetXml = $worksheetXml;
18 }
19
20 public function load(array $unparsedLoadedData)
21 {
22 if (!$this->worksheetXml) {
23 return $unparsedLoadedData;
24 }
25
26 $this->margins($this->worksheetXml, $this->worksheet);
27 $unparsedLoadedData = $this->pageSetup($this->worksheetXml, $this->worksheet, $unparsedLoadedData);
28 $this->headerFooter($this->worksheetXml, $this->worksheet);
29 $this->pageBreaks($this->worksheetXml, $this->worksheet);
30
31 return $unparsedLoadedData;
32 }
33
34 private function margins(\SimpleXMLElement $xmlSheet, Worksheet $worksheet)
35 {
36 if ($xmlSheet->pageMargins) {
37 $docPageMargins = $worksheet->getPageMargins();
38 $docPageMargins->setLeft((float) ($xmlSheet->pageMargins['left']));
39 $docPageMargins->setRight((float) ($xmlSheet->pageMargins['right']));
40 $docPageMargins->setTop((float) ($xmlSheet->pageMargins['top']));
41 $docPageMargins->setBottom((float) ($xmlSheet->pageMargins['bottom']));
42 $docPageMargins->setHeader((float) ($xmlSheet->pageMargins['header']));
43 $docPageMargins->setFooter((float) ($xmlSheet->pageMargins['footer']));
44 }
45 }
46
47 private function pageSetup(\SimpleXMLElement $xmlSheet, Worksheet $worksheet, array $unparsedLoadedData)
48 {
49 if ($xmlSheet->pageSetup) {
50 $docPageSetup = $worksheet->getPageSetup();
51
52 if (isset($xmlSheet->pageSetup['orientation'])) {
53 $docPageSetup->setOrientation((string) $xmlSheet->pageSetup['orientation']);
54 }
55 if (isset($xmlSheet->pageSetup['paperSize'])) {
56 $docPageSetup->setPaperSize((int) ($xmlSheet->pageSetup['paperSize']));
57 }
58 if (isset($xmlSheet->pageSetup['scale'])) {
59 $docPageSetup->setScale((int) ($xmlSheet->pageSetup['scale']), false);
60 }
61 if (isset($xmlSheet->pageSetup['fitToHeight']) && (int) ($xmlSheet->pageSetup['fitToHeight']) >= 0) {
62 $docPageSetup->setFitToHeight((int) ($xmlSheet->pageSetup['fitToHeight']), false);
63 }
64 if (isset($xmlSheet->pageSetup['fitToWidth']) && (int) ($xmlSheet->pageSetup['fitToWidth']) >= 0) {
65 $docPageSetup->setFitToWidth((int) ($xmlSheet->pageSetup['fitToWidth']), false);
66 }
67 if (isset($xmlSheet->pageSetup['firstPageNumber'], $xmlSheet->pageSetup['useFirstPageNumber']) &&
68 self::boolean((string) $xmlSheet->pageSetup['useFirstPageNumber'])) {
69 $docPageSetup->setFirstPageNumber((int) ($xmlSheet->pageSetup['firstPageNumber']));
70 }
71
72 $relAttributes = $xmlSheet->pageSetup->attributes('http://schemas.openxmlformats.org/officeDocument/2006/relationships');
73 if (isset($relAttributes['id'])) {
74 $unparsedLoadedData['sheets'][$worksheet->getCodeName()]['pageSetupRelId'] = (string) $relAttributes['id'];
75 }
76 }
77
78 return $unparsedLoadedData;
79 }
80
81 private function headerFooter(\SimpleXMLElement $xmlSheet, Worksheet $worksheet)
82 {
83 if ($xmlSheet->headerFooter) {
84 $docHeaderFooter = $worksheet->getHeaderFooter();
85
86 if (isset($xmlSheet->headerFooter['differentOddEven']) &&
87 self::boolean((string) $xmlSheet->headerFooter['differentOddEven'])) {
88 $docHeaderFooter->setDifferentOddEven(true);
89 } else {
90 $docHeaderFooter->setDifferentOddEven(false);
91 }
92 if (isset($xmlSheet->headerFooter['differentFirst']) &&
93 self::boolean((string) $xmlSheet->headerFooter['differentFirst'])) {
94 $docHeaderFooter->setDifferentFirst(true);
95 } else {
96 $docHeaderFooter->setDifferentFirst(false);
97 }
98 if (isset($xmlSheet->headerFooter['scaleWithDoc']) &&
99 !self::boolean((string) $xmlSheet->headerFooter['scaleWithDoc'])) {
100 $docHeaderFooter->setScaleWithDocument(false);
101 } else {
102 $docHeaderFooter->setScaleWithDocument(true);
103 }
104 if (isset($xmlSheet->headerFooter['alignWithMargins']) &&
105 !self::boolean((string) $xmlSheet->headerFooter['alignWithMargins'])) {
106 $docHeaderFooter->setAlignWithMargins(false);
107 } else {
108 $docHeaderFooter->setAlignWithMargins(true);
109 }
110
111 $docHeaderFooter->setOddHeader((string) $xmlSheet->headerFooter->oddHeader);
112 $docHeaderFooter->setOddFooter((string) $xmlSheet->headerFooter->oddFooter);
113 $docHeaderFooter->setEvenHeader((string) $xmlSheet->headerFooter->evenHeader);
114 $docHeaderFooter->setEvenFooter((string) $xmlSheet->headerFooter->evenFooter);
115 $docHeaderFooter->setFirstHeader((string) $xmlSheet->headerFooter->firstHeader);
116 $docHeaderFooter->setFirstFooter((string) $xmlSheet->headerFooter->firstFooter);
117 }
118 }
119
120 private function pageBreaks(\SimpleXMLElement $xmlSheet, Worksheet $worksheet)
121 {
122 if ($xmlSheet->rowBreaks && $xmlSheet->rowBreaks->brk) {
123 $this->rowBreaks($xmlSheet, $worksheet);
124 }
125 if ($xmlSheet->colBreaks && $xmlSheet->colBreaks->brk) {
126 $this->columnBreaks($xmlSheet, $worksheet);
127 }
128 }
129
130 private function rowBreaks(\SimpleXMLElement $xmlSheet, Worksheet $worksheet)
131 {
132 foreach ($xmlSheet->rowBreaks->brk as $brk) {
133 if ($brk['man']) {
134 $worksheet->setBreak("A{$brk['id']}", Worksheet::BREAK_ROW);
135 }
136 }
137 }
138
139 private function columnBreaks(\SimpleXMLElement $xmlSheet, Worksheet $worksheet)
140 {
141 foreach ($xmlSheet->colBreaks->brk as $brk) {
142 if ($brk['man']) {
143 $worksheet->setBreak(
144 Coordinate::stringFromColumnIndex(((int) $brk['id']) + 1) . '1',
145 Worksheet::BREAK_COLUMN
146 );
147 }
148 }
149 }
150 }
151