Skip to content

Commit 79ab852

Browse files
committed
Expose PDF writer to be used directly
We used to have some kind of wrapper that didn't do much except forward methods to the real instance. That unnecessary complexity made it harder to work with the real writer instance.
1 parent 98cd5e0 commit 79ab852

File tree

17 files changed

+314
-371
lines changed

17 files changed

+314
-371
lines changed

composer.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
"php-cs-fixer fix --ansi --dry-run --diff",
2828
"phpcs --report-width=200 --report-summary --report-full samples/ src/ tests/ --ignore=samples/Header.php --standard=PSR2 -n",
2929
"phpunit --color=always"
30+
],
31+
"fix": [
32+
"php-cs-fixer fix --ansi"
3033
]
3134
},
3235
"require": {

docs/topics/migration-from-PHPExcel.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,15 @@ autoloading mechanism.
124124

125125
## Writing PDF
126126

127-
`PHPExcel_Settings::setPdfRenderer()` and `PHPExcel_Settings::setPdfRenderer()`
128-
were removed and PDF libraries must be installed via composer. So the only thing
129-
to do is to specify a renderer like so:
127+
`PHPExcel_Settings::getPdfRenderer()` and `PHPExcel_Settings::setPdfRenderer()`
128+
were removed. `PHPExcel_Settings::getPdfRendererName()` and
129+
`PHPExcel_Settings::setPdfRendererName()` were renamed as `setDefaultPdfWriter()`
130+
and `setDefaultPdfWriter()` respectively. And PDF libraries must be installed via
131+
composer. So the only thing to do is to specify a default writer class like so:
130132

131133
```php
132-
$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_MPDF;
133-
\PhpOffice\PhpSpreadsheet\Settings::setPdfRendererName($rendererName);
134+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF::class;
135+
\PhpOffice\PhpSpreadsheet\Settings::setDefaultPdfWriter($rendererName);
134136
```
135137

136138
## PclZip and ZipArchive

docs/topics/reading-and-writing-to-file.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -745,24 +745,31 @@ of different libraries.
745745
746746
Currently, the following libraries are supported:
747747
748-
Library | Downloadable from | PhpSpreadsheet Internal Constant
749-
--------|-------------------------------------|---------------------------------
750-
tcPDF | https://github.com/tecnickcom/tcpdf | PDF_RENDERER_TCPDF
751-
mPDF | https://github.com/mpdf/mpdf | PDF_RENDERER_MPDF
752-
domPDF | https://github.com/dompdf/dompdf | PDF_RENDERER_DOMPDF
748+
Library | Downloadable from | PhpSpreadsheet writer
749+
--------|-------------------------------------|----------------------
750+
tcPDF | https://github.com/tecnickcom/tcpdf | TcPdf
751+
mPDF | https://github.com/mpdf/mpdf | MPDF
752+
domPDF | https://github.com/dompdf/dompdf | DomPDF
753753
754754
The different libraries have different strengths and weaknesses. Some
755755
generate better formatted output than others, some are faster or use
756756
less memory than others, while some generate smaller .pdf files. It is
757757
the developers choice which one they wish to use, appropriate to their
758758
own circumstances.
759759
760-
Before instantiating a Writer to generate PDF output, you will need to
761-
indicate which Rendering library you are using.
760+
Before instantiating a Writer via `IOFactory` to generate PDF output,
761+
you will need to indicate which writer you are using:
762762
763763
``` php
764-
$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_MPDF;
765-
\PhpOffice\PhpSpreadsheet\Settings::setPdfRendererName($rendererName);
764+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF::class;
765+
\PhpOffice\PhpSpreadsheet\Settings::setDefaultPdfWriter($rendererName);
766+
$writer = \PhpOffice\PhpSpreadsheet\IOFactory\IOFactory::createWriter($spreadsheet, 'Pdf');
767+
```
768+
769+
Or you can instantiate directly the writer of your choice like so:
770+
771+
``` php
772+
$writer = \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF($spreadsheet);
766773
```
767774
768775
#### Writing a spreadsheet
@@ -771,11 +778,11 @@ Once you have identified the Renderer that you wish to use for PDF
771778
generation, you can write a .pdf file using the following code:
772779
773780
``` php
774-
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf($spreadsheet);
781+
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF($spreadsheet);
775782
$writer->save("05featuredemo.pdf");
776783
```
777784
778-
Please note that \PhpOffice\PhpSpreadsheet\Writer\Pdf only outputs the
785+
Please note that `\PhpOffice\PhpSpreadsheet\Writer\Pdf` only outputs the
779786
first worksheet by default.
780787
781788
#### Write all worksheets
@@ -803,7 +810,7 @@ This can be slow on large spreadsheets, and maybe even unwanted. You can
803810
however disable formula pre-calculation:
804811
805812
``` php
806-
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf($spreadsheet);
813+
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF($spreadsheet);
807814
$writer->setPreCalculateFormulas(false);
808815
809816
$writer->save("05featuredemo.pdf");

samples/Basic/01_Simple_download_pdf.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616

1717
// Change these values to select the Rendering library that you wish to use
1818
// and its directory location on your server
19-
//$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_TCPDF;
20-
$rendererName = Settings::PDF_RENDERER_MPDF;
21-
//$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_DOMPDF;
19+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF::class;
2220

2321
// Create new Spreadsheet object
2422
$spreadsheet = new Spreadsheet();
@@ -51,7 +49,7 @@
5149
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
5250
$spreadsheet->setActiveSheetIndex(0);
5351

54-
Settings::setPdfRendererName($rendererName);
52+
Settings::setDefaultPdfWriter($rendererName);
5553

5654
// Redirect output to a client’s web browser (PDF)
5755
header('Content-Type: application/pdf');

samples/Basic/26_Utf8.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77

88
// Change these values to select the PDF Rendering library that you wish to use
99
// and its directory location on your server
10-
//$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_TCPDF;
11-
//$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_MPDF;
12-
$rendererName = Settings::PDF_RENDERER_DOMPDF;
10+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\DomPDF::class;
1311

1412
// Read from Xlsx (.xlsx) template
1513
$helper->log('Load Xlsx template file');
@@ -21,7 +19,7 @@
2119

2220
// Export to PDF (.pdf)
2321
$helper->log('Write to PDF format');
24-
Settings::setPdfRendererName($rendererName);
22+
Settings::setDefaultPdfWriter($rendererName);
2523
$helper->write($spreadsheet, __FILE__, ['Pdf']);
2624

2725
// Remove first two rows with field headers before exporting to CSV

samples/Chart/32_Chart_read_write_PDF.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77

88
// Change these values to select the Rendering library that you wish to use
99
// for PDF files, and its directory location on your server
10-
//$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_TCPDF;
11-
$rendererName = Settings::PDF_RENDERER_MPDF;
12-
//$rendererName = \PhpOffice\PhpSpreadsheet\Settings::PDF_RENDERER_DOMPDF;
10+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF::class;
1311

14-
Settings::setPdfRendererName($rendererName);
12+
Settings::setDefaultPdfWriter($rendererName);
1513

1614
// Change these values to select the Rendering library that you wish to use
1715
// for Chart images, and its directory location on your server

samples/Pdf/21_Pdf_Domdf.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
$helper->log('Set orientation to landscape');
1313
$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
1414

15-
$rendererName = Settings::PDF_RENDERER_DOMPDF;
15+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\DomPDF::class;
1616
$helper->log("Write to PDF format using {$rendererName}");
17-
Settings::setPdfRendererName($rendererName);
17+
Settings::setDefaultPdfWriter($rendererName);
1818

1919
// Save
2020
$helper->write($spreadsheet, __FILE__, ['Pdf']);

samples/Pdf/21_Pdf_TCPDF.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
$helper->log('Set orientation to landscape');
1313
$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
1414

15-
$rendererName = Settings::PDF_RENDERER_TCPDF;
15+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\TcPDF::class;
1616
$helper->log("Write to PDF format using {$rendererName}");
17-
Settings::setPdfRendererName($rendererName);
17+
Settings::setDefaultPdfWriter($rendererName);
1818

1919
// Save
2020
$helper->write($spreadsheet, __FILE__, ['Pdf']);

samples/Pdf/21_Pdf_mPDF.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
$helper->log('Set orientation to landscape');
1313
$spreadsheet->getActiveSheet()->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
1414

15-
$rendererName = Settings::PDF_RENDERER_MPDF;
15+
$rendererName = \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF::class;
1616
$helper->log("Write to PDF format using {$rendererName}");
17-
Settings::setPdfRendererName($rendererName);
17+
Settings::setDefaultPdfWriter($rendererName);
1818

1919
// Save
2020
$helper->write($spreadsheet, __FILE__, ['Pdf']);

src/PhpSpreadsheet/Helper/Migrator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public function getMapping()
5959
'PHPExcel_Writer_OpenDocument_Styles' => \PhpOffice\PhpSpreadsheet\Writer\Ods\Styles::class,
6060
'PHPExcel_Writer_OpenDocument_Thumbnails' => \PhpOffice\PhpSpreadsheet\Writer\Ods\Thumbnails::class,
6161
'PHPExcel_Writer_OpenDocument_WriterPart' => \PhpOffice\PhpSpreadsheet\Writer\Ods\WriterPart::class,
62-
'PHPExcel_Writer_PDF_Core' => \PhpOffice\PhpSpreadsheet\Writer\Pdf\Core::class,
62+
'PHPExcel_Writer_PDF_Core' => \PhpOffice\PhpSpreadsheet\Writer\Pdf::class,
6363
'PHPExcel_Writer_PDF_DomPDF' => \PhpOffice\PhpSpreadsheet\Writer\Pdf\DomPDF::class,
6464
'PHPExcel_Writer_PDF_mPDF' => \PhpOffice\PhpSpreadsheet\Writer\Pdf\MPDF::class,
6565
'PHPExcel_Writer_PDF_tcPDF' => \PhpOffice\PhpSpreadsheet\Writer\Pdf\TcPDF::class,

0 commit comments

Comments
 (0)