2013-12-15 33 views
0

我已經安裝KNP活潑束與作曲家和隨後在https://github.com/KnpLabs/KnpSnappyBundleKNP活潑束和wkhtmltopdf ContextErrorException

我已經安裝wkhtmltopdf-0.9.9-Installer.exe的用於使用和配置教程和改變默認路徑在該config.yml文件

# knp_snappy Configuration 
knp_snappy: 
    pdf: 
     enabled: true 
     binary:  C:\Program Files (x86)\wkhtmltopdf 
     options: [] 

這裏是功能

/** 
* @Route("/print", name="invite_print") 
* @Method("GET") 
*/ 
public function printAction() { 
    $entity = new Invite(); 
    $form = $this->createCreateForm($entity); 

    $html = $this->renderView('PrifProtocoleBundle:Invite:new.html.twig', array(
     'entity' => $entity, 
     'form' => $form->createView() 
    )); 

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

但unfortunateley我有這些錯誤消息:

錯誤1:

ContextErrorException: Warning: json_encode(): Invalid UTF-8 sequence in argument in C:\wamp\www\protocole\app\cache\dev\classes.php line 4592 

錯誤2:

ContextErrorException: Warning: json_encode(): Invalid UTF-8 sequence in argument in C:\wamp\www\protocole\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php line 132 

可有人告訴我怎樣做才能解決這個問題呢?感謝

在json.php文件中的函數json_encode(奇怪的空)

/** 
* (PHP 5 &gt;= 5.2.0, PECL json &gt;= 1.2.0)<br/> 
* Returns the JSON representation of a value 
* @link http://php.net/manual/en/function.json-encode.php 
* @param mixed $value <p> 
* The <i>value</i> being encoded. Can be any type except 
* a resource. 
* </p> 
* <p> 
* This function only works with UTF-8 encoded data. 
* </p> 
* @param int $options [optional] <p> 
* Bitmask consisting of <b>JSON_HEX_QUOT</b>, 
* <b>JSON_HEX_TAG</b>, 
* <b>JSON_HEX_AMP</b>, 
* <b>JSON_HEX_APOS</b>, 
* <b>JSON_NUMERIC_CHECK</b>, 
* <b>JSON_PRETTY_PRINT</b>, 
* <b>JSON_UNESCAPED_SLASHES</b>, 
* <b>JSON_FORCE_OBJECT</b>, 
* <b>JSON_UNESCAPED_UNICODE</b>. The behaviour of these 
* constants is described on 
* the JSON constants page. 
* </p> 
* @param int $depth [optional] 
* @return string a JSON encoded string on success or <b>FALSE</b> on failure. 
*/ 
function json_encode ($value, $options = 0, $depth = 512) {} 

用於錯誤2

protected function toJson($data, $ignoreErrors = false) 
{ 
    // suppress json_encode errors since it's twitchy with some inputs 
    if ($ignoreErrors) { 
     if (version_compare(PHP_VERSION, '5.4.0', '>=')) { 
      return @json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); 
     } 

     return @json_encode($data); 
    } 

    if (version_compare(PHP_VERSION, '5.4.0', '>=')) { 
     return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); 
    } 

    return json_encode($data); 
} 

的config.yml文件的文件NormalizerFormatter.php

# Doctrine Configuration 
doctrine: 
dbal: 
    driver: %database_driver% 
    host:  %database_host% 
    port:  %database_port% 
    dbname: %database_name% 
    user:  %database_user% 
    password: %database_password% 
    charset: UTF8 
    # if using pdo_sqlite as your database driver, add the path in parameters.yml 
    # e.g. database_path: %kernel.root_dir%/data/data.db3 
    # path:  %database_path% 

orm: 
    auto_generate_proxy_classes: %kernel.debug% 
    auto_mapping: true 
    naming_strategy: doctrine.orm.naming_strategy.underscore 

樹枝檔案

{# app/Resources/views/layout.html.twig #} 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8" > 
    <link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet" media="screen"> 
    {% block body %} 

{% endblock %} 

===================

{# PrifBundle/invite/new.html.twig #} 
{% extends 'PrifBundle::layout.html.twig' %} 

{% block body %} 

<div class="well"> 

<div class="form-horizontal" role="form"> 


{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}   
{# Les erreurs générales du formulaire. #} 
{{ form_errors(form) }} 

回答

1

這個問題是不相關的wkhtml2pdf也不活潑的包。請嘗試以下

  • 清除緩存

  • 刪除響應'charset' => 'UTF-8' OR

  • 確保你的觀點和數據是UTF-8編碼

的問題是在使用json_encode()方法在您的代碼中(您未發佈)或緩存中的某處。

+0

您好,感謝您的答覆,我已經按照你的意見,掃清了現金,去掉「字符集」 =>從響應,並在我的layout.html.twig「UTF-8」還有就是<元http-equiv =「Content-Type」content =「text/html」charset =「utf-8」>但我仍然有json_encode錯誤信息。我在以前的帖子中添加了更多的代碼與json_encode方法...感謝您的時間 – Albee

+0

我的ide是netbeans我發現我必須添加此行:netbeans_default_options =「 - J-Dfile.encoding = UTF-8」在netbeans 。conf,但錯誤消息仍然... – Albee

+0

@Albee你在哪裏使用json_encode? –

0

可能是一個長鏡頭,但添加一些JavaScript相關的參數幫助我一個JavaScript問題。你也許可以看看有什麼其他參數可用於wkhtmltopdf,可能有幫助?

# knp_snappy pdf generation 
knp_snappy: 
    pdf: 
     enabled: true 
     binary:  %wkhtmltopdf_location%/wkhtmltopdf 
     options: 
      load-error-handling: ignore 
      no-stop-slow-scripts: ~ 
      enable-javascript: ~ 
      use-xserver: ~ 
      page-size: A4 
      dpi: 300 
      javascript-delay: 3200 
相關問題