'ContentTypes', 'Rels' => 'Rels', 'DocPropsApp' => 'DocPropsApp', 'Document' => 'Document', 'Styles' => 'Styles', 'Numbering' => 'Numbering', 'Settings' => 'Settings', 'WebSettings' => 'WebSettings', 'Header' => 'Header', 'Footer' => 'Footer', 'Footnotes' => 'Footnotes', 'Endnotes' => 'Footnotes', ]; foreach ($writerParts as $part => $type) { self::assertInstanceOf( "PhpOffice\\PhpWord\\Writer\\Word2007\\Part\\{$type}", $object->getWriterPart($part) ); self::assertInstanceOf( 'PhpOffice\\PhpWord\\Writer\\Word2007', $object->getWriterPart($part)->getParentWriter() ); } } /** * Save. */ public function testSave(): void { $localImage = __DIR__ . '/../_files/images/earth.jpg'; $remoteImage = self::getRemoteGifImageUrl(); $phpWord = new PhpWord(); $phpWord->addFontStyle('Font', ['size' => 11]); $phpWord->addParagraphStyle('Paragraph', ['alignment' => Jc::CENTER]); $section = $phpWord->addSection(); $section->addText('Test 1', 'Font', 'Paragraph'); $section->addTextBreak(); $section->addText('Test 2'); $section = $phpWord->addSection(); $textrun = $section->addTextRun(); $textrun->addText('Test 3'); $footnote = $textrun->addFootnote(); $footnote->addLink('https://github.com/PHPOffice/PHPWord'); $header = $section->addHeader(); $header->addImage($localImage); $footer = $section->addFooter(); $footer->addImage($remoteImage); $writer = new Word2007($phpWord); $file = __DIR__ . '/../_files/temp.docx'; $writer->save($file); self::assertFileExists($file); unlink($file); } /** * Save using disk caching. */ public function testSaveUseDiskCaching(): void { $phpWord = new PhpWord(); $section = $phpWord->addSection(); $section->addText('Test'); $footnote = $section->addFootnote(); $footnote->addText('Test'); $writer = new Word2007($phpWord); $writer->setUseDiskCaching(true); $file = __DIR__ . '/../_files/temp.docx'; $writer->save($file); self::assertFileExists($file); unlink($file); } /** * Check content types. */ public function testCheckContentTypes(): void { $images = [ 'mars_noext_jpg' => '1.jpg', 'mars.jpg' => '2.jpg', 'mario.gif' => '3.gif', 'firefox.png' => '4.png', 'duke_nukem.bmp' => '5.bmp', 'angela_merkel.tif' => '6.tif', ]; $phpWord = new PhpWord(); $section = $phpWord->addSection(); foreach ($images as $source => $target) { $section->addImage(__DIR__ . "/../_files/images/{$source}"); } $doc = TestHelperDOCX::getDocument($phpWord); $mediaPath = $doc->getPath() . '/word/media'; foreach ($images as $source => $target) { self::assertFileEquals( __DIR__ . "/../_files/images/{$source}", $mediaPath . "/section_image{$target}" ); } } /** * Get writer part return null value. */ public function testGetWriterPartNull(): void { $object = new Word2007(); self::assertNull($object->getWriterPart()); } /** * Set/get use disk caching. */ public function testSetGetUseDiskCaching(): void { $this->setOutputCallback(function (): void { }); $phpWord = new PhpWord(); $phpWord->addSection(); $object = new Word2007($phpWord); $object->setUseDiskCaching(true, PHPWORD_TESTS_BASE_DIR); $writer = new Word2007($phpWord); $writer->save('php://output'); self::assertTrue($object->isUseDiskCaching()); } /** * Use disk caching exception. */ public function testSetUseDiskCachingException(): void { $this->expectException(\PhpOffice\PhpWord\Exception\Exception::class); $dir = implode(DIRECTORY_SEPARATOR, [PHPWORD_TESTS_BASE_DIR, 'foo']); $object = new Word2007(); $object->setUseDiskCaching(true, $dir); } }