.. _general: General usage ============= Basic example ------------- The following is a basic example of the PHPWord library. More examples are provided in the `samples folder `__. .. code-block:: php addSection(); // Adding Text element to the Section having font styled by default... $section->addText( '"Learn from yesterday, live for today, hope for tomorrow. ' . 'The important thing is not to stop questioning." ' . '(Albert Einstein)' ); /* * Note: it's possible to customize font style of the Text element you add in three ways: * - inline; * - using named font style (new font style object will be implicitly created); * - using explicitly created font style object. */ // Adding Text element with font customized inline... $section->addText( '"Great achievement is usually born of great sacrifice, ' . 'and is never the result of selfishness." ' . '(Napoleon Hill)', array('name' => 'Tahoma', 'size' => 10) ); // Adding Text element with font customized using named font style... $fontStyleName = 'oneUserDefinedStyle'; $phpWord->addFontStyle( $fontStyleName, array('name' => 'Tahoma', 'size' => 10, 'color' => '1B2232', 'bold' => true) ); $section->addText( '"The greatest accomplishment is not in never falling, ' . 'but in rising again after you fall." ' . '(Vince Lombardi)', $fontStyleName ); // Adding Text element with font customized using explicitly created font style object... $fontStyle = new \PhpOffice\PhpWord\Style\Font(); $fontStyle->setBold(true); $fontStyle->setName('Tahoma'); $fontStyle->setSize(13); $myTextElement = $section->addText('"Believe you can and you\'re halfway there." (Theodor Roosevelt)'); $myTextElement->setFontStyle($fontStyle); // Saving the document as OOXML file... $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007'); $objWriter->save('helloWorld.docx'); // Saving the document as ODF file... $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'ODText'); $objWriter->save('helloWorld.odt'); // Saving the document as HTML file... $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML'); $objWriter->save('helloWorld.html'); /* Note: we skip RTF, because it's not XML-based and requires a different example. */ /* Note: we skip PDF, because "HTML-to-PDF" approach is used to create PDF documents. */ PHPWord Settings ---------------- The ``PhpOffice\PhpWord\Settings`` class provides some options that will affect the behavior of PHPWord. Below are the options. XML Writer compatibility ~~~~~~~~~~~~~~~~~~~~~~~~ This option sets `XMLWriter::setIndent `__ and `XMLWriter::setIndentString `__. The default value of this option is ``true`` (compatible), which is `required for OpenOffice `__ to render OOXML document correctly. You can set this option to ``false`` during development to make the resulting XML file easier to read. .. code-block:: php \PhpOffice\PhpWord\Settings::setCompatibility(false); Zip class ~~~~~~~~~ By default, PHPWord uses `Zip extension `__ to deal with ZIP compressed archives and files inside them. If you can't have Zip extension installed on your server, you can use pure PHP library alternative, `PclZip `__, which is included in PHPWord. .. code-block:: php \PhpOffice\PhpWord\Settings::setZipClass(\PhpOffice\PhpWord\Settings::PCLZIP); Output escaping ~~~~~~~~~~~~~~~ Writing documents of some formats, especially XML-based, requires correct output escaping. Without it your document may become broken when you put special characters like ampersand, quotes, and others in it. Escaping can be performed in two ways: outside of the library by a software developer and inside of the library by built-in mechanism. By default, the built-in mechanism is disabled for backward compatibility with versions prior to v0.13.0. To turn it on set ``outputEscapingEnabled`` option to ``true`` in your PHPWord configuration file or use the following instruction at runtime: .. code-block:: php \PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true); Default font ~~~~~~~~~~~~ By default, every text appears in Arial 10 point. You can alter the default font by using the following two functions: .. code-block:: php $phpWord->setDefaultFontName('Times New Roman'); $phpWord->setDefaultFontSize(12); Document settings ----------------- Settings for the generated document can be set using ``$phpWord->getSettings()`` Magnification Setting ~~~~~~~~~~~~~~~~~~~~~ The default zoom value is 100 percent. This can be changed either to another percentage .. code-block:: php $phpWord->getSettings()->setZoom(75); Or to predefined values ``fullPage``, ``bestFit``, ``textFit`` .. code-block:: php $phpWord->getSettings()->setZoom(Zoom::BEST_FIT); Spelling and grammatical checks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ By default spelling and grammatical errors are shown as soon as you open a word document. For big documents this can slow down the opening of the document. You can hide the spelling and/or grammatical errors with: .. code-block:: php $phpWord->getSettings()->setHideGrammaticalErrors(true); $phpWord->getSettings()->setHideSpellingErrors(true); You can also specify the status of the spell and grammar checks, marking spelling or grammar as dirty will force a re-check when opening the document. .. code-block:: php $proofState = new ProofState(); $proofState->setGrammar(ProofState::CLEAN); $proofState->setSpelling(ProofState::DIRTY); $phpWord->getSettings()->setProofState(proofState); Track Revisions ~~~~~~~~~~~~~~~ Track changes can be activated using ``setTrackRevisions``, you can furture specify - Not to use move syntax, instead moved items will be seen as deleted in one place and added in another - Not track formatting revisions .. code-block:: php $phpWord->getSettings()->setTrackRevisions(true); $phpWord->getSettings()->setDoNotTrackMoves(true); $phpWord->getSettings()->setDoNotTrackFormatting(true); Decimal Symbol ~~~~~~~~~~~~~~ The default symbol to represent a decimal figure is the ``.`` in english. In french you might want to change it to ``,`` for instance. .. code-block:: php $phpWord->getSettings()->setDecimalSymbol(','); Document Language ~~~~~~~~~~~~~~~~~ The default language of the document can be change with the following. .. code-block:: php $phpWord->getSettings()->setThemeFontLang(new Language(Language::FR_BE)); ``Languge`` has 3 parameters, one for Latin languages, one for East Asian languages and one for Complex (Bi-Directional) languages. A couple of language codes are provided in the ``PhpOffice\PhpWord\ComplexType\Language`` class but any valid code/ID can be used. In case you are generating an RTF document the Language need to be set differently. .. code-block:: php $lang = new Language(); $lang->setLangId(Language::EN_GB_ID); $phpWord->getSettings()->setThemeFontLang($lang); Document information -------------------- You can set the document information such as title, creator, and company name. Use the following functions: .. code-block:: php $properties = $phpWord->getDocInfo(); $properties->setCreator('My name'); $properties->setCompany('My factory'); $properties->setTitle('My title'); $properties->setDescription('My description'); $properties->setCategory('My category'); $properties->setLastModifiedBy('My name'); $properties->setCreated(mktime(0, 0, 0, 3, 12, 2014)); $properties->setModified(mktime(0, 0, 0, 3, 14, 2014)); $properties->setSubject('My subject'); $properties->setKeywords('my, key, word'); Measurement units ----------------- The base length unit in Open Office XML is twip. Twip means "TWentieth of an Inch Point", i.e. 1 twip = 1/1440 inch. You can use PHPWord helper functions to convert inches, centimeters, or points to twips. .. code-block:: php // Paragraph with 6 points space after $phpWord->addParagraphStyle('My Style', array( 'spaceAfter' => \PhpOffice\PhpWord\Shared\Converter::pointToTwip(6)) ); $section = $phpWord->addSection(); $sectionStyle = $section->getStyle(); // half inch left margin $sectionStyle->setMarginLeft(\PhpOffice\PhpWord\Shared\Converter::inchToTwip(.5)); // 2 cm right margin $sectionStyle->setMarginRight(\PhpOffice\PhpWord\Shared\Converter::cmToTwip(2));