0

我正在尝试使用robregonm pdfresponseFormatter创建 PDF,问题是,pdf 类永远不会被称为格式响应类型。

    'response' => [
        'formatters' => [
            'html' => [
                'class' => 'yii\web\HtmlResponseFormatter',
            ],
            'pdf' => [
                'class' => 'robregonm\pdf\PdfResponseFormatter',
                'mode' => '',
                'format' => 'A4',
                'defaultFontSize' => 0,
                'defaultFont' => '',
                'marginLeft' => 15,
                'marginRight' => 15,
                'marginTop' => 16,
                'marginBottom' => 16,
                'marginHeader' => 9,
                'marginFooter' => 9,
            ]
        ]
    ],
....
$file = $this->getPdf($report);
....
private function getPdf($report){
    Yii::$app->response->format = 'pdf';

   Yii::$container->set(Yii::$app->response->formatters['pdf']['class']);

    $this->layout = '//attachment';

    return $this->render('pdf/actionplan', ['model' => $report]);
}

$file 变量包含视图中的 HTML 文本

4

2 回答 2

0

你问错问题了。当然 $file 里面有 HTML,你从你的视图中返回 HTML。

Yii::$app->response->format = 'pdf'; 

当控制器向浏览器返回响应时工作。

您要问的是为什么控制器功能(我希望这是在控制器中)不返回从 HTML 创建的 PDF。

如果您只想保存 PDF,请查看我如何处理此问题:https ://github.com/Mihai-P/yii2-core/blob/master/components/Controller.php在 actionPdf 函数中。该函数返回一个文件,您可以根据需要将其保存在服务器上。

于 2015-01-28T01:03:00.643 回答
0

不幸的是,我无法让这个扩展工作。我确实让kartik pdf工作得很好

我建议改用 kartik 扩展。

于 2015-01-28T16:22:43.683 回答