src/Controller/PdfApiController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Category;
  4. use App\Entity\User;
  5. use App\Services\PdfGeneratorService;
  6. use http\Env\Request;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  9. use Symfony\Component\HttpFoundation\File\File;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class PdfApiController extends AbstractController
  14. {
  15.     /**
  16.      * @Route("/api", name="api")
  17.      */
  18.     public function index(): Response
  19.     {
  20.        return new Response("test");
  21.     }
  22.     /**
  23.      * @Route("/api/pdf/generate/{timestamp}/{token}", name="pdf_generate")
  24.      */
  25.     public function generate(\Symfony\Component\HttpFoundation\Request $request,$timestamp,$tokenPdfGeneratorService $pdf): Response
  26.     {
  27.        try {
  28.            if(!isset($_GET['payload']))
  29.            {
  30.                return new JsonResponse(array(
  31.                    'success'=>false,
  32.                    'message'=>'Invalid Payload'
  33.                ));
  34.            }
  35.            $b64_payload urldecode($_GET['payload']);
  36.            $payload json_decode(base64_decode($_GET['payload']),true);
  37.            if(!$payload || !isset($payload['urls']) || empty($payload['urls']))
  38.            {
  39.                return new JsonResponse(array(
  40.                    'success'=>false,
  41.                    'message'=>'Invalid Payload'
  42.                ));
  43.            }
  44.            $proceed_token md5($b64_payload.$timestamp."@laoupdfgenerator765");
  45.            $pdf->init('test');
  46.            foreach($payload['urls'] as $url)
  47.                 $pdf->add($url);
  48.            if(isset($payload['options']) && isset($payload['options']['pdf']))
  49.            {
  50.                foreach($payload['options']['pdf'] as $k=>$v)
  51.                {
  52.                    $pdf->addOption($k,$v);
  53.                }
  54.            }
  55.            list($id,$path) = $pdf->compile();
  56.            if(isset($payload['options']) && isset($payload['options']['pdf']['mode']) && $payload['options']['pdf']['mode']=='local')
  57.            {
  58.                return new JsonResponse(array(
  59.                    'success'=>true,
  60.                    'message'=>'Succeed',
  61.                    'id'=>$id,
  62.                    'path'=>$path
  63.                ));
  64.            }
  65.            $file = new File($path);
  66.            return new BinaryFileResponse($path);
  67.        }
  68.        catch(Exception $e)
  69.        {
  70.            return new JsonResponse(array(
  71.               'success'=>false,
  72.               'message'=>$e->getMessage()
  73.            ));
  74.        }
  75.     }
  76. }