1 | <?php
|
---|
2 |
|
---|
3 | class Pdf extends Model
|
---|
4 | {
|
---|
5 | public bool $Checked = false;
|
---|
6 | public string $BorderTop = '';
|
---|
7 | public string $BorderLeft = '';
|
---|
8 | public string $BorderRight = '';
|
---|
9 | public string $BorderBottom = '';
|
---|
10 | public int $FontSize = 0;
|
---|
11 | public string $OutputFormat = 'pdf';
|
---|
12 | public string $Charset = '8859-2';
|
---|
13 |
|
---|
14 | function GenerateHTML(): string
|
---|
15 | {
|
---|
16 | return '';
|
---|
17 | }
|
---|
18 |
|
---|
19 | function SaveToFile(string $FileName): void
|
---|
20 | {
|
---|
21 | $PdfData = $this->HtmlToPdf($this->GenerateHTML());
|
---|
22 | file_put_contents($FileName, $PdfData);
|
---|
23 | }
|
---|
24 |
|
---|
25 | function HtmlToPdf(string $HtmlCode): string
|
---|
26 | {
|
---|
27 | $Encoding = new Encoding();
|
---|
28 | if ($this->Checked == false) {
|
---|
29 | if (CommandExist('htmldoc')) {
|
---|
30 | $this->Checked = true;
|
---|
31 | } else throw new Exception('htmldoc is not installed.');
|
---|
32 | }
|
---|
33 | $Parameters = '--no-numbered --footer . --webpage --no-embedfonts --charset '.$this->Charset.' -t '.$this->OutputFormat;
|
---|
34 | if ($this->FontSize > 0) $Parameters .= ' --fontsize '.$this->FontSize;
|
---|
35 | if ($this->BorderLeft != '') $Parameters .= ' --left '.$this->BorderLeft;
|
---|
36 | if ($this->BorderTop != '') $Parameters .= ' --top '.$this->BorderTop;
|
---|
37 | if ($this->BorderRight != '') $Parameters .= ' --right '.$this->BorderRight;
|
---|
38 | if ($this->BorderBottom != '') $Parameters .= ' --bottom '.$this->BorderBottom;
|
---|
39 | $Output = shell_exec('echo "'.addslashes($Encoding->FromUTF8($HtmlCode)).
|
---|
40 | '"|htmldoc '.$Parameters.' -');
|
---|
41 | return $Output;
|
---|
42 | }
|
---|
43 | }
|
---|