src/Controller/Demo/PdfMergeController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Demo;
  3. use App\Form\PdfMergeDemoType;
  4. use App\Model\PdfMerge\PdfDemoModel;
  5. use App\Service\PdfService;
  6. use App\Service\UploadService;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  9. use Symfony\Component\HttpFoundation\File\UploadedFile;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * Class PdfMergeController
  15.  * @package App\Controller\Demo
  16.  * @Route("/pdf-merge")
  17.  */
  18. class PdfMergeController extends AbstractController
  19. {
  20.     
  21.     /**
  22.      * @param Request $request
  23.      * @param UploadService $uploadService
  24.      * @param PdfService $pdfService
  25.      * @return BinaryFileResponse|Response
  26.      * @Route("/", name="pdf_merge_demo")
  27.      */
  28.     public function index(Request $requestUploadService $uploadServicePdfService $pdfService) {
  29.         $pdfModel = new PdfDemoModel();
  30.         $form $this->createForm(PdfMergeDemoType::class, $pdfModel);
  31.         
  32.         if($request->isMethod("post")) {
  33.             $form->handleRequest($request);
  34.             
  35.             $files = [];
  36.             
  37.             /** @var UploadedFile $pdf1 */
  38.             $pdf1 $form->get("pdf1")->getData();
  39.             
  40.             /** @var @var UploadedFile $pdf2 */
  41.             $pdf2 $form->get("pdf2")->getData();
  42.             
  43.             if($pdf1 && $pdf2) {
  44.                 $uploadDir $this->getParameter("upload_pdf_dir");
  45.                 $files[] = $uploadService->uploadFile($pdf1$uploadDir);
  46.                 $files[] = $uploadService->uploadFile($pdf2$uploadDir);
  47.                 
  48.                 $pdfMerged $pdfService->pdfMerge($files);
  49.                 
  50.                 $finalPath $this->getParameter('kernel.project_dir') . "/public".$pdfMerged;
  51.                 
  52.                 return new BinaryFileResponse($finalPathResponse::HTTP_OK);
  53.             }
  54.         }
  55.         
  56.         return $this->render('pdf_merge/form.html.twig', [
  57.             'form' => $form->createView()
  58.         ]);
  59.     }
  60. }