PHP - Fpdi split pdf

 
Vista:

Fpdi split pdf

Publicado por luis Romero (1 intervención) el 26/05/2022 21:08:10
Buenas tardes.
Necesito ayuda, estoy trabajando en un proyecto donde tengo que cargar un PDF con varias paginas y este mismo separar cada una de esas paginas y guardarlas, estoy usando Angular para el front y Laravel para el Back.

En este ultimo estoy usando Fpdi y TCpdi para poder separar los pdfs pero no lo estoy logrando y no veo el error, les adjunto el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
namespace App\Http\Controllers;
 
 
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
use \App\Audit;
use App\Recibo;
use App\Empleado;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\UploadedFile;
use PDF;
use setasign\Fpdi\Tcpdf\Fpdi;
use setasign\Fpdi\PdfReader;
 
class ReciboController extends Controller {
 
    public function saveRecibo (request $request) {
        try {
            if ($request->hasFile('myField')) {
 
                $file = $request->file('myField');
                $filename = $file->getClientOriginalName();
                $extension = $file->getClientOriginalExtension();
                $fileNameOnly = pathinfo($filename, PATHINFO_FILENAME);
                $time = time();
                $completePdf = str_replace(' ', '_', $fileNameOnly).'-'.date('m-d-Y-s', $time).'Original.'.$extension;
                $path = '/public/recibos/'.date('m-d-Y', $time);
                if (!file_exists($path)) {
                    mkdir($path, 0777);
                }
                $save = $file->storeAs($path, $completePdf);
                $this->splitPdf($completePdf,$path);
 
                return response()->json(['status' => true, 'message'=> 'Guardado con exito']);
            }
        } catch (\Exception $e) {
            return response()->json(['status' => false, 'message' => $e]);
        }
    }
}

Estoy usando la funcion saveRecibo para recibir el pdf y guardarlo en una carpeta.
Tambien hago el llamado a la funcion splitPdf en donde separo las paginas del pdf, sin embargo no logro hacer que lea el pdf que ya tengo ni que guarde los pdfs nuevos en la carpeta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function splitPdf ($filename,$dir) {
 
        $pdf = new Fpdi();
        $count = $pdf->setSourceFile($filename);
 
        for ($i = 1; $i <= $count; $i++) {
            $newPdf = new Fpdi();
            $newPdf->AddPage();
            $newPdf->setSourceFile($filename);
            $newPdf->useTemplate($newPdf->importPage($i));
 
            try {
                $newFilename = $dir.str_replace('.pdf', '', $filename).'_'.$i.".pdf";
                $newPdf->Output($newFilename, "F");
            } catch (\Exception $e){
                return response()->json(['status' => false, 'message' => $e]);
            }
        }

Muchas gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder