ciao!
ho creato una funzione che sostanzialmente fa questo:
- in un template docx mette una immagine passata in post
- poi prende il file docx creato e lo trasforma in pdf
- salva il pdf sul server
funziona tutto, tranne che il pdf non ha la stessa formattazione del docx.
avete qualche idea al riguardo??
Codice PHP:
class PrivacyController extends Controller {
public function salvaFirma(Request $req) {
$data = $req->json()->all();
$clienteId = $data['cl_id'];
$image = $data['image'];
try {
// SALVO IMMAGINE FIRMA
$image = str_replace('data:image/png;base64,', '', $image);
$image = str_replace(' ', '+', $image);
$imageName = "firma_img_$clienteId" . '.png';
\File::put(public_path('firme/') . '/' . $imageName, base64_decode($image));
// CREO WORD FIARMATO
$outFile = "FIRMA_CLIENTE_" . $clienteId . ".docx";
$template = public_path("templates/privacy.docx");
$phpWord = new TemplateProcessor($template);
$phpWord->setImageValue('img_firma', array(
'path' => public_path("firme/$imageName"),
));
$docxFinale = public_path("firme/$outFile");
$phpWord->saveAs($docxFinale);
// CONVERTO IN PDF
$pdfFirma = "FIRMA_CLIENTE_" . $clienteId . ".pdf";
$domPdfPath = base_path('vendor/dompdf/dompdf');
Settings::setPdfRendererPath($domPdfPath);
Settings::setPdfRendererName('DomPDF');
$contentWord = IOFactory::load($docxFinale);
$pdfWriter = IOFactory::createWriter($contentWord, 'PDF');
$pdfWriter->save(public_path("firme/$pdfFirma"));
// SALVO NEL DB IL RECORD
DB::insert('CALL add_archivio(?,?,?,?,?,?)', array(
'clienti', 'cl_id', $clienteId, $pdfFirma, "Firma digitale", "firme/"
));
return response()->json(array(
"res" => "ok",
"message" => "Firma salvata correttamente!"
));
} catch (CopyFileException | CreateTemporaryFileException | RuntimeException | QueryException $e) {
return response()->json([
'res' => 'ko',
'message' => 'Errore: ' . $e->getMessage()
]);
}
}
}