2013-12-15 30 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 
相关问题