2015-05-18 14 views
5

Sto utilizzando Symfony2. Quando il file pdf viene generato utilizzando questo codice:Caratteri errati durante la generazione di file PDF con Knp Snappy

public function printAction($id) 
    { 
     // initialiser $demande 
     $html = $this->renderView('PFETimeBundle:Demande:print.html.twig', 
      array('demande'=> $demande) 
     ); 

      return new Response(
       $this->get('knp_snappy.pdf')->getOutputFromHtml($html), 
       200, 
       array(
        'Content-Type'   => 'application/pdf', 
        'Content-Disposition' => 'attachment; filename="file.pdf"' 
       ) 
      ); 
    } 

ottengo questo contenuto (caratteri francesi appaiono in caratteri cattivi): enter image description here

risposta

12

tenta di aggiungere il encoding proprietà

'encoding' => 'utf-8', 

Heres una copia completa del mio codice di lavoro, nota che passo un array di opzioni come secondo argomento per getOutPutFromHtml()

 return new Response(
      $this->get('knp_snappy.pdf')->getOutputFromHtml($html, array(
       'orientation' => 'landscape', 
       'enable-javascript' => true, 
       'javascript-delay' => 1000, 
       'no-stop-slow-scripts' => true, 
       'no-background' => false, 
       'lowquality' => false, 
       'encoding' => 'utf-8', 
       'images' => true, 
       'cookie' => array(), 
       'dpi' => 300, 
       'image-dpi' => 300, 
       'enable-external-links' => true, 
       'enable-internal-links' => true 
      )), 
      200, 
      array(
       'Content-Type'   => 'application/pdf', 
       'Content-Disposition' => 'attachment; filename="report.pdf"' 
      ) 
     ); 
+0

Grazie mille. Ha funzionato per me. – mehdi

+0

np, felice che abbia aiutato! –

+0

Grazie per questo. Mi hai risparmiato un sacco di tempo per leggere il codice per capire come passare le opzioni e quale opzione passare per impostare la 'codifica' –

1

Se si utilizza il metodo generateFromHtml, si deve utilizzare in questo modo, al terzo parametro:

$this->container->get('knp_snappy.pdf')->generateFromHtml(
    $this->container->get('templating')->render(
     'YourBundle:Template:pdfTemplate.html.twig', 
     array(
      'var' => $var, 
     ) 
    ), 
    '/path/to/file.pdf', 
    array(
     'encoding' => 'utf-8', 
    ) 
);