Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@nolainteractive.com>
7 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Pdf\Document;
15
16/**
17 * Pdf document interface
18 *
19 * @category   Pop
20 * @package    Pop\Pdf
21 * @author     Nick Sagona, III <dev@nolainteractive.com>
22 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
23 * @license    http://www.popphp.org/license     New BSD License
24 * @version    5.0.0
25 */
26interface DocumentInterface
27{
28
29    /**
30     * Set the document version
31     *
32     * @param  float $version
33     * @return DocumentInterface
34     */
35    public function setVersion(float $version): DocumentInterface;
36
37    /**
38     * Set the document metadata
39     *
40     * @param  Metadata $metadata
41     * @return DocumentInterface
42     */
43    public function setMetadata(Metadata $metadata): DocumentInterface;
44
45    /**
46     * Set the document origin
47     *
48     * @param  string $origin
49     * @return DocumentInterface
50     */
51    public function setOrigin(string $origin): DocumentInterface;
52
53    /**
54     * Get the document version
55     *
56     * @return float
57     */
58    public function getVersion(): float;
59
60    /**
61     * Get the document origin
62     *
63     * @return string
64     */
65    public function getOrigin(): string;
66
67    /**
68     * Get the document metadata
69     *
70     * @return ?Metadata
71     */
72    public function getMetadata(): ?Metadata;
73
74    /**
75     * Get the PDF page objects array
76     *
77     * @return array
78     */
79    public function getPages(): array;
80
81    /**
82     * Get a PDF page object
83     *
84     * @param  int $p
85     * @throws \Pop\Pdf\Exception
86     * @return Page
87     */
88    public function getPage(int $p): Page;
89
90    /**
91     * Determine if the document has page objects
92     *
93     * @return bool
94     */
95    public function hasPages(): bool;
96
97    /**
98     * Get the PDF font objects array
99     *
100     * @return array
101     */
102    public function getFonts(): array;
103
104    /**
105     * Get a PDF font object
106     *
107     * @param  string $name
108     * @throws \Pop\Pdf\Exception
109     * @return Font
110     */
111    public function getFont(string $name): Font;
112
113    /**
114     * Determine if the document has font objects
115     *
116     * @return bool
117     */
118    public function hasFonts(): bool;
119
120    /**
121     * Get available fonts that have been added to the PDF document
122     *
123     * @return array
124     */
125    public function getAvailableFonts(): array;
126
127    /**
128     * Determine if a font has been added to the PDF document
129     *
130     * @param  string $font
131     * @return bool
132     */
133    public function isFontAvailable(string $font): bool;
134
135    /**
136     * Determine if a font has been added to the PDF document (alias)
137     *
138     * @param  string $font
139     * @return bool
140     */
141    public function hasFont(string $font): bool;
142
143    /**
144     * Get the current page number
145     *
146     * @return ?int
147     */
148    public function getCurrentPage(): ?int;
149
150    /**
151     * Get the current number of pages
152     *
153     * @return int
154     */
155    public function getNumberOfPages(): int;
156
157    /**
158     * Get the current font
159     *
160     * @return ?string
161     */
162    public function getCurrentFont(): ?string;
163
164    /**
165     * Get the current number of fonts
166     *
167     * @return int
168     */
169    public function getNumberOfFonts(): int;
170
171    /**
172     * Get form objects
173     *
174     * @return array
175     */
176    public function getForms(): array;
177
178    /**
179     * Get form objects
180     *
181     * @param  string $name
182     * @return ?Form
183     */
184    public function getForm(string $name): ?Form;
185
186    /**
187     * Determine if the document has form objects
188     *
189     * @return bool
190     */
191    public function hasForms(): bool;
192
193    /**
194     * Add form
195     *
196     * @param  Form $form
197     * @return DocumentInterface
198     */
199    public function addForm(Form $form): DocumentInterface;
200
201    /**
202     * Set the compression
203     *
204     * @param  bool $compression
205     * @return DocumentInterface
206     */
207    public function setCompression(bool $compression): DocumentInterface;
208
209    /**
210     * Determine whether the PDF is compressed or not
211     *
212     * @return bool
213     */
214    public function isCompressed(): bool;
215
216    /**
217     * Constructor
218     *
219     * Instantiate a PDF document
220     *
221     * @param  ?Page     $page
222     * @param  ?Metadata $metadata
223     * @return DocumentInterface
224     */
225    public function __construct(?Page $page = null, ?Metadata $metadata = null);
226
227    /**
228     * Add a page to the PDF document
229     *
230     * @param  Page $page
231     * @return DocumentInterface
232     */
233    public function addPage(Page $page): DocumentInterface;
234
235    /**
236     * Add pages to the PDF document
237     *
238     * @param  array $pages
239     * @return DocumentInterface
240     */
241    public function addPages(array $pages): DocumentInterface;
242
243    /**
244     * Create and return a new page object, adding it to the PDF document
245     *
246     * @param  mixed $size
247     * @param  ?int   $height
248     * @return Page
249     */
250    public function createPage(mixed $size, ?int $height = null): Page;
251
252    /**
253     * Copy and return a page of the PDF, adding it to the PDF document
254     *
255     * @param  int $p
256     * @throws Exception
257     * @return Page
258     */
259    public function copyPage(int $p): Page;
260
261    /**
262     * Order the pages
263     *
264     * @param  array $pages
265     * @throws Exception
266     * @return DocumentInterface
267     */
268    public function orderPages(array $pages): DocumentInterface;
269
270    /**
271     * Delete a page from the PDF document
272     *
273     * @param  int $p
274     * @throws Exception
275     * @return DocumentInterface
276     */
277    public function deletePage(int $p): DocumentInterface;
278
279    /**
280     * Add a font
281     *
282     * @param  Font $font
283     * @throws Exception
284     * @return DocumentInterface
285     */
286    public function addFont(Font $font): DocumentInterface;
287
288    /**
289     * Add fonts
290     *
291     * @param  array $fonts
292     * @throws Exception
293     * @return AbstractDocument
294     */
295    public function addFonts(array $fonts): DocumentInterface;
296
297    /**
298     * Add a font
299     *
300     * @param  Font $font
301     * @param  bool $embedOverride
302     * @throws Exception
303     * @return DocumentInterface
304     */
305    public function embedFont(Font $font, bool $embedOverride = false): DocumentInterface;
306
307    /**
308     * Embed fonts
309     *
310     * @param  array $fonts
311     * @param  bool $embedOverride
312     * @throws Exception
313     * @return DocumentInterface
314     */
315    public function embedFonts(array $fonts, bool $embedOverride = false): DocumentInterface;
316
317    /**
318     * Create style
319     *
320     * @param  Style|string $style
321     * @return DocumentInterface
322     */
323    public function createStyle(Style|string $style, ?string $font = null, int|float|null $size = null): DocumentInterface;
324
325    /**
326     * Add a style
327     *
328     * @param  Style|string $style
329     * @return DocumentInterface
330     */
331    public function addStyle(Style|string $style): DocumentInterface;
332
333    /**
334     * Add styles
335     *
336     * @param  array $styles
337     * @return DocumentInterface
338     */
339    public function addStyles(array $styles): DocumentInterface;
340
341    /**
342     * Set the current page of the PDF document
343     *
344     * @param  int $p
345     * @throws Exception
346     * @return DocumentInterface
347     */
348    public function setCurrentPage(int $p): DocumentInterface;
349
350    /**
351     * Set the current font of the PDF document
352     *
353     * @param  string $name
354     * @throws Exception
355     * @return DocumentInterface
356     */
357    public function setCurrentFont(string $name): DocumentInterface;
358
359    /**
360     * Output the PDF document to string
361     *
362     * @return string
363     */
364    public function __toString(): string;
365
366}