2017-08-15 28 views
0

生成的PDF報告的頁數,修復我在用的瞬間生成PDF報告活潑

全文包含文本和圖表,並應在4頁每一頁包含與特定主題的數據。

所以我所做的就是創建4分度,寬度:100%和height:100%,但不是4頁我有

問題出在哪裏9頁?我甚至嘗試使用 '頁面大小'=> 'A4',但相同的9頁的產生

public function pdfAction(Survey $survey) 
{ 
    $chart=new ChartController(); 
    $event = $survey->getEvent(); 


    $year = $survey->getYear(); 
    $qb = $this->getDoctrine()->getManager()->createQueryBuilder(); 
    $qb->select('e') 
     ->from('AppBundle:Survey', 'e') 
     ->where('e.year <= :year') 
     ->andWhere('e.event = :event') 
     ->setParameter('year', $year) 
     ->setParameter('event', $event->getId()) 
     ->orderBy('e.year', 'DESC') 
     ->setMaxResults(4); 
    $survey_year= = $qb->getQuery()->getResult(); 
    $date = array(); 

    $data1 = array(); 
    $data2 = array(); 
    $data3 = array(); 
    $data4 = array(); 


    $survey_year= array_reverse($survey_year, true); 
    foreach($survey_year as $ea){ 
     $date[] = $ea->getAnnee(); 
     $data1[] = $ea->getForm()->getBudget(); 
     $data2[] = $ea->getForm()->getRessources(); 
     $data3[] = $ea->getForm()->getTauxGlobal(); 
     $data4[] = $ea->getForm()->getTauxConsumption(); 


    } 


    $list1= array(
     'name' => 'Budget', 
     'type' => 'column', 
     'color' => '#4572A7', 
     'yAxis' => 1, 
     'dataLabels' => array(
      'enabled' => true 
     ), 
     'data' => $data1 
    ); 


    $list2 = array(
     'name' => 'Ressource', 
     'type' => 'column', 
     'color' => '#D49EDA', 
     'yAxis' => 1, 
     'dataLabels' => array(
      'enabled' => true 
     ), 
     'data' => $data2 
    ); 


    $list3= array(
     'name' => 'Taux global', 
     'type' => 'spline', 
     'color' => '#0A0F19', 
     'dataLabels' => array(
      'enabled' => true 
     ), 
     'data' => $data3 
    ); 


    $list4 = array(
     'name'=> 'Taux Consumption', 
     'type' => 'spline', 
     'color' => '#225824', 
     'dataLabels' => array(
      'enabled' => true 
     ), 
     'data' => $data4 
    ); 

    $containerpie1 = $chart->pieChart1($survey); 

    $containerpie2 = $chart->pieChart2($survey); 
    $containerpie3=$chart->pieChart3($survey); 
    $container4=$chart->multiAxeChart($date, $list1, $list2,$list3,$list4); 



    $html = $this->render('AppBundle:event:pdf.html.twig',array(
     'survey' =>$survey, 
     'containerpie1'=>$containerpie1, 
     'containerpie2'=>$containerpie2, 
     'containerpie3'=>$containerpie3, 
     'container4' => $container4, 

    )); 




    return new Response(
     $this->get('knp_snappy.pdf')->getOutputFromHtml($html,array(

      'default-header'=>false, 
      'encoding' => 'utf-8', 
      'images' => true, 
      'enable-javascript' => true, 
      'javascript-delay' => 5000 
     )), 
     200, 
     array(
      'Content-Type'   => 'application/pdf', 
      'Content-Disposition' => 'attachment; filename="file1.pdf"' 
     ) 
    ); 

} 

Pdf.twig.html

<div style="width: 100%; height: 100% "> 

    <header> 

     <span>{{ survey.event.name </span> 
    </header> 
<h2 style="width:100% ;background-color:darkseagreen">Genaral</h2> 

    <p> 
     <span class="address" style="font-weight: bold">address:</span> 
     <span >survey.event. address}}</span> 
    </p> 
    <p> 
     <span class="email" style="font-weight: bold">email:</span> 
     <span class=survey.event.email}}</span> 
    </p> 
</div> 

<div style="width: 100%;height: 100% "> 

     <h2 style="width:100%;background-color:darkseagreen"> Resources </h2> 
     <p></p> 
     <p>Budget p> 



     <div style="display: inline;padding-top: 5em"> 
      <div id="containerpie1" style="display:inline-block; width: 350px; height: 300px; margin: 0 auto; padding-left: 18em"> 

      </div> 
     </div> 
     <div style="display: inline;padding-top: 5em"> 
      <div id="containerpie2" style="display:inline-block; width: 350px; height: 300px; margin: 0 auto; padding-left: 18em"> 

      </div> 
     </div> 
    </div> 

<div style="width: 100%;height: 100% "> 


     <h2 style="width:100%;background-color:darkseagreen">Activity</h2> 
     <p></p> 

    <div > 

     <div id="container3" style="display:inline-block;width: 350px; height: 280px; margin: 0 auto"></div> 


    </div> 

</div> 

<div style="width:100%;height:100% "> 


     <h2 style="width:100%;background-color:darkseagreen">Team</h2> 
     <p></p> 
     <p>Performance</p> 
    <div > 
     <div id=" container4" style="display:inline-block; width: 800px; height: 400px; margin: 0 auto"> 
     </div> 
    </div> 


</div> 

更新

經過更多搜索後,我發現我應該修復mm的高度

<div style="width: 100%; height: 340mm "> 

這是唯一的解決方案嗎?

+0

你有錯誤,更改:' - >在哪裏('E。 year')''到' - > where('e.year =:year')' –

+0

我不認爲將width/height設置爲100%會幫助你。我想你會想手動指定'8.5in'和'11in'(或反向)。你也想設置你的'margin'和'orientation'值。總之,PDF生成可以多次只是反覆試驗。您可能需要爲PDF生成創建樣式表。 –

回答

0

嘗試添加onepage類你的div並添加這個CSS:

.onepage { 
    page-break-inside: avoid !important; 
    page-break-after: always !important; 
} 
@media print{ 
    .onepage { 
     page-break-inside: avoid !important; 
     page-break-after: always !important; 
    } 
} 

它與斯納皮和wkhtmltopdf v0.12.2

+0

它沒有爲我工作在文檔的末尾添加了一個額外的頁面 – Julie

+0

你知道你使用的是什麼版本的wkhtmltopdf嗎? – LP154

+0

yes wkhtmltopdf-windows「:」0.12.2.3「 – Julie