<?php
namespace App\Controller\Demo;
use App\Form\PdfMergeDemoType;
use App\Model\PdfMerge\PdfDemoModel;
use App\Service\PdfService;
use App\Service\UploadService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* Class PdfMergeController
* @package App\Controller\Demo
* @Route("/pdf-merge")
*/
class PdfMergeController extends AbstractController
{
/**
* @param Request $request
* @param UploadService $uploadService
* @param PdfService $pdfService
* @return BinaryFileResponse|Response
* @Route("/", name="pdf_merge_demo")
*/
public function index(Request $request, UploadService $uploadService, PdfService $pdfService) {
$pdfModel = new PdfDemoModel();
$form = $this->createForm(PdfMergeDemoType::class, $pdfModel);
if($request->isMethod("post")) {
$form->handleRequest($request);
$files = [];
/** @var UploadedFile $pdf1 */
$pdf1 = $form->get("pdf1")->getData();
/** @var @var UploadedFile $pdf2 */
$pdf2 = $form->get("pdf2")->getData();
if($pdf1 && $pdf2) {
$uploadDir = $this->getParameter("upload_pdf_dir");
$files[] = $uploadService->uploadFile($pdf1, $uploadDir);
$files[] = $uploadService->uploadFile($pdf2, $uploadDir);
$pdfMerged = $pdfService->pdfMerge($files);
$finalPath = $this->getParameter('kernel.project_dir') . "/public".$pdfMerged;
return new BinaryFileResponse($finalPath, Response::HTTP_OK);
}
}
return $this->render('pdf_merge/form.html.twig', [
'form' => $form->createView()
]);
}
}