2017-08-07 5 views
0

J'utilise l'extension mpdf pour générer des fichiers PDF. J'ai défini les paramètres globaux pour le mpdf dans le fichier de configuration, donc je suis capable d'appeler la fonction chaque fois que je veux générer un pdf à partir de mon action de contrôleur. Cependant, j'ai du mal à changer l'orientation pour le pdf avec des données qui nécessitent une orientation paysage puisque l'orientation par défaut définie dans les paramètres globaux est portrait. Voici les codes:Yii2: Remplacer les paramètres d'orientation PDF globaux pour mpdf dans l'action du contrôleur

Code main.pdf pour le paramètre global

'pdf' => [ 
    'class' => Pdf::classname(), 
    'mode' => Pdf::MODE_UTF8, // leaner size using standard fonts 
    'format' => Pdf::FORMAT_A4, 
    'orientation' => Pdf::ORIENT_PORTRAIT, 
    'destination' => Pdf::DEST_BROWSER, 
    'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css', 
    // any css to be embedded if required 
    'cssInline' => '.kv-heading-1{font-size:18px}', 
    'options' => [ 
     'shrink_tables_to_fit' => 0 
    ], 
    // refer settings section for all configuration options 
], 

Controller Action appeler les paramètres globaux:

public function actionReservationsList() 
{ 
    $searchModel = new ReservationsSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->session->get('repquery')); 
    $dataProvider->pagination = false; 

    $pdf = Yii::$app->pdf; 
    $pdf->content = $this->renderPartial('index', [ 
      'searchModel' => $searchModel, 
      'dataProvider' => $dataProvider, 
     ]); 
    $pdf->methods = [ 
     'SetHeader' => [Yii::$app->user->identity->company->name.'||Date: ' . date("r")], 
     'SetFooter' => ['User: '.Yii::$app->user->identity->username.'||Page {PAGENO}'], 
    ]; 
    return $pdf->render(); 
} 

Je besoin d'aide pour écraser le paramètre 'orientation' => Pdf::ORIENT_PORTRAIT, qui est dans les paramètres globaux main.php fichier de l'action du contrôleur.

Répondre

0

Vous devez ajouter le contenu via addPage. Donc, si vous construisez un tableau de pages, avec le contenu etc - vous devriez être capable de spécifier l'orientation par page.

<?php 

$mpdf = new mPDF('', 'Legal'); 
$mpdf->WriteHTML(' 
    Hello World 
'); 

$mpdf->AddPage('L'); // Adds a new page in Landscape orientation 

$mpdf->WriteHTML(' 
    Hello World 
'); 

$mpdf->Output(); 

?> 
+0

Hey mec, est-ce yii2 cadre vraiment? – japheth

+0

Yii2 est juste un cadre, la création de PDF est faite par (dans ce cas) mPDF. Donc non, ce n'est pas le cas. Mais vous utilisez mPDF qui est (je suppose) implémenté dans Yii d'une certaine manière. Il peut donc être utile de vérifier si vous avez des fonctions disponibles comme ** 'AddPage' ** et de travailler à partir de là. – sbrn

+0

En fait, j'ai essayé, mais il est une erreur que cette fonction n'est pas disponible. Merci tout de même pour ta contribution. – japheth

0

Essayez d'ajouter cette ligne ceci:

$pdf = Yii::$app->pdf; 
$pdf->orientation = Pdf::ORIENT_LANDSCAPE; 
+0

Malheureusement, cela ne fonctionne pas champion; – japheth