DrawingImageHyperlinkTest.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Functional;
  3. use PhpOffice\PhpSpreadsheet\Cell\Hyperlink;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;
  6. class DrawingImageHyperlinkTest extends AbstractFunctional
  7. {
  8. public function testDrawingImageHyperlinkTest(): void
  9. {
  10. $gdImage = @imagecreatetruecolor(120, 20);
  11. $textColor = ($gdImage === false) ? false : imagecolorallocate($gdImage, 255, 255, 255);
  12. if ($gdImage === false || $textColor === false) {
  13. self::fail('imagecreatetruecolor or imagecolorallocate failed');
  14. } else {
  15. $baseUrl = 'https://github.com/PHPOffice/PhpSpreadsheet';
  16. $spreadsheet = new Spreadsheet();
  17. $aSheet = $spreadsheet->getActiveSheet();
  18. imagestring($gdImage, 1, 5, 5, 'Created with PhpSpreadsheet', $textColor);
  19. $drawing = new MemoryDrawing();
  20. $drawing->setName('In-Memory image 1');
  21. $drawing->setDescription('In-Memory image 1');
  22. $drawing->setCoordinates('A1');
  23. $drawing->setImageResource($gdImage);
  24. $drawing->setRenderingFunction(
  25. MemoryDrawing::RENDERING_JPEG
  26. );
  27. $drawing->setMimeType(MemoryDrawing::MIMETYPE_DEFAULT);
  28. $drawing->setHeight(36);
  29. $hyperLink = new Hyperlink($baseUrl, 'test image');
  30. $drawing->setHyperlink($hyperLink);
  31. $drawing->setWorksheet($aSheet);
  32. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
  33. $spreadsheet->disconnectWorksheets();
  34. foreach ($reloadedSpreadsheet->getActiveSheet()->getDrawingCollection() as $pDrawing) {
  35. $getHyperlink = $pDrawing->getHyperlink();
  36. if ($getHyperlink === null) {
  37. self::fail('getHyperlink returned null');
  38. } else {
  39. self::assertEquals('https://github.com/PHPOffice/PhpSpreadsheet', $getHyperlink->getUrl(), 'functional test drawing hyperlink');
  40. }
  41. }
  42. $reloadedSpreadsheet->disconnectWorksheets();
  43. }
  44. }
  45. }