# Writers
## HTML
The name of the writer is `HTML`.
``` php
save(__DIR__ . '/sample.html');
```
When generating html/pdf, you can alter the default handling of white space (normal), and/or supply a fallback generic font as follows:
```php
$writer = IOFactory::createWriter($oPhpWord, 'HTML');
$writer->setDefaultGenericFont('serif');
$writer->setDefaultWhiteSpace('pre-wrap');
$writer->save(__DIR__ . '/sample.html');
```
## ODText
The name of the writer is `ODText`.
``` php
save(__DIR__ . '/sample.docx');
```
## PDF
The name of the writer is `PDF`.
``` php
save(__DIR__ . '/sample.pdf');
```
To generate a PDF, the PhpWord object passes through HTML before generating the PDF.
This HTML can be modified using a callback.
``` php
setEditCallback('cbEditHTML');
$writer->save(__DIR__ . '/sample.pdf');
/**
* Add a meta tag generator
*/
function cbEditHTML(string $inputHTML): string
{
$beforeBody = '';
$needle = '';
$pos = strpos($inputHTML, $needle);
if ($pos !== false) {
$inputHTML = (string) substr_replace($inputHTML, "$beforeBody\n$needle", $pos, strlen($needle));
}
return $inputHTML;
}
```
### Options
You can define options like :
* `font`: default font
Options must be defined before creating the writer.
``` php
'Arial'
]);
$writer = IOFactory::createWriter($oPhpWord, 'PDF');
$writer->save(__DIR__ . '/sample.pdf');
```
#### Specify the PDF Renderer
Before PHPWord can write a PDF, you **must** specify the renderer to use and the path to it.
Currently, three renderers are supported:
- [DomPDF](https://github.com/dompdf/dompdf)
- [MPDF](https://mpdf.github.io/)
- [TCPDF](https://tcpdf.org/)
To specify the renderer you use two static `Settings` functions:
- `setPdfRendererName`: This sets the name of the renderer library to use.
Provide one of [`Settings`' three `PDF_` constants](https://github.com/PHPOffice/PHPWord/blob/master/src/PhpWord/Settings.php#L39-L41) to the function call.
- `setPdfRendererPath`: This sets the path to the renderer library.
This directory is the renderer's package directory within Composer's _vendor_ directory.
In the code below, you can see an example of setting MPDF as the desired PDF renderer.
```php
Settings::setPdfRendererName(Settings::PDF_RENDERER_MPDF);
Settings::setPdfRendererPath(__DIR__ . '/../vendor/mpdf/mpdf');
```
## RTF
The name of the writer is `RTF`.
``` php
save(__DIR__ . '/sample.rtf');
```
## Word2007
The name of the writer is `Word2007`.
``` php
save(__DIR__ . '/sample.docx');
```
### ZIP Adapter
You can change the ZIP Adapter for the writer. By default, the ZIP Adapter is `ZipArchiveAdapter`.
``` php
setZipAdapter(new PclZipAdapter());
$writer->save(__DIR__ . '/sample.docx');
```