2015-05-18 11 views
5

Używam Symfony2. Gdy plik PDF jest generowany przy użyciu tego kodu:Złe znaki podczas generowania pliku pdf za pomocą 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"' 
       ) 
      ); 
    } 

uzyskać zawartość (znaki francuskie pojawiają się w złych znaków): enter image description here

Odpowiedz

12

Spróbuj dodać właściwość

'encoding' => 'utf-8', 

encoding herezje pełna kopia mojego działającego kodu, pls zauważ, że przekazuję tablicę opcji jako drugi argument do 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

Dziękuję bardzo. To zadziałało dla mnie. – mehdi

+0

np. Cieszę się, że pomogło! –

+0

Dzięki za to. Zaoszczędziłeś mi mnóstwo czasu na przeglądanie kodu, aby dowiedzieć się, jak przekazać opcje i jaką opcję przekazać, aby ustawić "kodowanie" –

1

Jeśli używasz metody generateFromHtml, trzeba używać go tak, w trzecim parametrze:

$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', 
    ) 
); 
Powiązane problemy