2017-02-19 13 views
0

Я пытаюсь создать файл pdf для списка данных. Вот я использовал расширение kartik mpdf. У меня есть 3 поля со списком в моем представлении отчета. в моем столе, и когда я нажимаю кнопку «Печать», все мои кнопки отображаются в моем файле pdf, а также кнопках. Я хочу пропустить поле со списком и кнопки. Также я хочу скомпоновать созданный файл PDF.Экспорт таблицы список в pdf в yii2 с помощью kartik mpdf

мой взгляд код:

<?php 
use yii\helpers\Html; 
use yii\widgets\ActiveForm; 
use app\models\FiscalYear; 
use app\models\CodeValue; 
use yii\helpers\ArrayHelper; 
use app\models\CompanyInfo; 
?> 

<?php $form = ActiveForm::begin(['id' => 'Company-report', 
     'action' => ['company-report'], 
     'method' => 'POST', 

    ]); ?> 

      <div class="col-sm-2"> 
       <?= $form->field($model, 'fy_id')->dropDownList(
       ArrayHelper::map(FiscalYear::getAllFiscalYr(),'fy_id','fiscal_yr'), 
       ['prompt'=>Selct Fiscal Year.।'])?> 
      </div> 

      <div class="col-sm-3"> 
        <?= $form->field($model, 'sfcl_id')->dropDownList(
       ArrayHelper::map(Company::getCompanyData(),'company_id','company_name'), 
       ['prompt'=>'Select Company'])?> 

      </div> 

     <table> 
     <tr> 

     <?= Html::submitButton('Search',[ 'name'=>'view', 'value' => 'view', 'class' => 'btn btn-default']) ?> 
     <?= Html::submitButton('Print',[ 'name'=>'print', 'value' => 'print','target'=> '_blank', 'class' => 'btn btn-default']) ?> 

     </tr> 
     </table> 

     <br/><br/> 


    <?php ActiveForm::end(); ?> 
    <div class="box"> 
      <div class="box-header with-border"> 
       <h3 class="box-title"><b>Report</b></h3> 
      </div> 
     </div> 
    <div class="box-body table-responsive no-padding"> 
    <table class="table table-hover" id="myDemoTable" cellpadding="0" cellspacing="0"> 

     <tbody> 
      <tr> 
       <td style="font-weight: bold;">Sn.</td> 
       <td style="font-weight: bold;">Fiscal Yr</td> 
       <td style="font-weight: bold;">P1</td> 
       <td style="font-weight: bold;">P2</td> 
       <td style="font-weight: bold;">P3</td> 
       <td style="font-weight: bold;">E1</td> 
       <td style="font-weight: bold;">E2</td> 
       <td style="font-weight: bold;">E3</td> 
       <td style="font-weight: bold;">E4</td> 
       <td style="font-weight: bold;">E5</td> 

      </tr> 
      <?php 

      $fyId=$model->fy_id; 
      $companyId=$model->company_id; 
      $pearlFinancial=array(); 

      $companyData=Yii::$app->db->createCommand("select * from company_report where fy_id='$fyId' and company_id='$companyId' ")->queryAll(); 

      $sn=1; 
      if (empty($companyData)) { 
       return; 
      }else{ 


      foreach($companyData as $pearl) 
      { 
      ?> 
      <tr> 
       <td><?php echo $sn; ?></td> 
       <td><?php 
       $fisYear=FiscalYear::findFiscalYearById($model->fy_id); 
       echo($fisYear->fiscal_yr); 

       ?></td> 
       <td><?php echo $pearl['P1']; ?></td> 
       <td><?php echo $pearl['P2']; ?></td> 
       <td><?php echo $pearl['P3']; ?></td> 
       <td><?php echo $pearl['E1']; ?></td> 
       <td><?php echo $pearl['E2']; ?></td> 
       <td><?php echo $pearl['E3']; ?></td> 
       <td><?php echo $pearl['E4']; ?></td> 
       <td><?php echo $pearl['E5']; ?></td> 

      </tr> 
      <?php 
      $sn++; 
      }} 
      ?> 

     </tbody> 
    </table> 
    </div> 

Мой контроллер:

public function actionPearlFinancialReport() 
{  
    $model = new CompanyReport; 

    if ($model->load(Yii::$app->request->post()) && $model->validate()) { 
     if (isset($_POST['print'])) { 
     $pdf = new Pdf([ 
     'mode' => Pdf::MODE_UTF8, 
     'format' => Pdf::FORMAT_A4, 
     'orientation' => Pdf::ORIENT_PORTRAIT, 
     'destination' => Pdf::DEST_BROWSER, 
     'content' => $this->renderPartial('company_report', ['model' => $model,]), 
     'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css', 
     'cssInline'=> '.kv-heading-1{font-size:40px}', 
     'options' => ['title' => 'Pearl Financial Report'], 
     'methods' => [ 
      'SetHeader'=>['Company Report'], 
      'SetFooter'=>['{PAGENO}'], 
     ] 
    ]); 


    $response = Yii::$app->response; 
    $response->format = \yii\web\Response::FORMAT_RAW; 
    $headers = Yii::$app->response->headers; 
    $headers->add('Content-Type', 'application/pdf'); 

    return $pdf->render(); 
     } 

    } 

    return $this->render('company_report',['model'=>$model]); 
} 

Может ли один помочь с моей проблемой?

ответ

0

Ваша проблема в том, что вы используете один и тот же вид для создания как формы, так и pdf. Вам, вероятно, понадобится отдельный файл представления для отчета в формате pdf, в котором вы можете опустить кнопки и комбинированные поля.

У вас уже есть код в вашем контроллере, чтобы создать отчет. Либо встроенный, используя cssInline, либо включив собственный файл css с помощью 'cssFile'

1

Предполагая, что вы используете загрузочный файл (который вы, вероятно, используете, если используете виджеты kartik), вы можете скрыть что угодно, печать класс. Обращение к вашему коду:

<?php $form = ActiveForm::begin(['id' => 'Company-report', 
    'action' => ['company-report'], 
    'method' => 'POST', 
    'options' => [ 
     'class' => 'hidden-print', 
    ], 
]); ?> 
+0

Благодарим за это, я понятия не имел, что 'mpdf' уважают эти классы' css'. Гораздо более элегантный, чем мое решение, и сохраняет весь отчет в одном файле. –

+0

Да, это хорошо - я нахожу его очень полезным – sonofagun

 Смежные вопросы

  • Нет связанных вопросов^_^