Visualizzazione dei risultati da 1 a 1 su 1
  1. #1

    [Laravel] Convertire docx in pdf mantenendo formattazione

    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/') . '/' $imageNamebase64_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()
                ]);
            }

        }



  2. #2
    E' indispensabile usare un docx? Spiego...se fosse possibile usare html "normale" E fosse possibile usare le funzioni shell_exec E sei in grado di "purificare" tutti i dati in input, puoi usare un template in html puro e poi wkhtmltopdf tramite shell. Ottieni pdf praticamente perfetti, senza differenze di formattazione.
    Se invece devi per forza usare docx, assicurati che una volta salvato il docx con la firma ($docxFinale), il file sia esattamente come te lo aspetti (cioè il nuovo docx sia come desideri). Essendo un xml, non vorrei che la libreria che fa l'inserimento dell'immagine poi si perda qualche pezzo nella formattazione.
    Se è tutto a posto, quali differenze ci sono tra docx e pdf? Allineamento, posizionamento, caratteri, ecc ecc

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.