ImageCopyTest.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
  3. use PhpOffice\PhpSpreadsheet\Reader\Xls as XlsReader;
  4. use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
  5. use PhpOffice\PhpSpreadsheet\Shared\File;
  6. use PhpOffice\PhpSpreadsheet\Writer\Html;
  7. use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter;
  8. use PhpOffice\PhpSpreadsheetTests\Functional;
  9. class ImageCopyTest extends Functional\AbstractFunctional
  10. {
  11. /** @var string */
  12. private $xlsxFile = '';
  13. protected function tearDown(): void
  14. {
  15. if ($this->xlsxFile !== '') {
  16. unlink($this->xlsxFile);
  17. $this->xlsxFile = '';
  18. }
  19. }
  20. public function testImageCopyXls(): void
  21. {
  22. $file = 'samples/templates/27template.xls';
  23. $reader = new XlsReader();
  24. $reloadedSpreadsheet = $reader->load($file);
  25. $writer = new Html($reloadedSpreadsheet);
  26. $writer->writeAllSheets();
  27. self::assertFalse($writer->getEmbedImages());
  28. $html = $writer->generateHTMLAll();
  29. self::assertSame(4, substr_count($html, '<img'));
  30. self::assertSame(0, substr_count($html, 'zip://'));
  31. // all 4 images converted to png
  32. self::assertSame(4, substr_count($html, 'data:image/png;base64'));
  33. $this->writeAndReload($reloadedSpreadsheet, 'Html');
  34. $reloadedSpreadsheet->disconnectWorksheets();
  35. }
  36. public function testImageCopyXlsx(): void
  37. {
  38. $file = 'samples/templates/27template.xls';
  39. $reader = new XlsReader();
  40. $spreadsheet = $reader->load($file);
  41. $this->xlsxFile = File::temporaryFilename();
  42. $writer = new XlsxWriter($spreadsheet);
  43. $writer->save($this->xlsxFile);
  44. $spreadsheet->disconnectWorksheets();
  45. $reader2 = new XlsxReader();
  46. $reloadedSpreadsheet = $reader2->load($this->xlsxFile);
  47. $writer = new Html($reloadedSpreadsheet);
  48. $writer->writeAllSheets();
  49. self::assertFalse($writer->getEmbedImages());
  50. $html = $writer->generateHTMLAll();
  51. self::assertSame(4, substr_count($html, '<img'));
  52. self::assertSame(0, substr_count($html, 'zip://'));
  53. // "gif" is actually stored as png in this file
  54. self::assertSame(2, substr_count($html, 'data:image/png;base64'));
  55. //self::assertSame(1, substr_count($html, 'data:image/gif;base64'));
  56. self::assertSame(2, substr_count($html, 'data:image/jpeg;base64'));
  57. $this->writeAndReload($reloadedSpreadsheet, 'Html');
  58. $reloadedSpreadsheet->disconnectWorksheets();
  59. }
  60. }