首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Yii2中使用export kartik下载的文档中添加标题?

如何在Yii2中使用export kartik下载的文档中添加标题?
EN

Stack Overflow用户
提问于 2017-07-27 10:12:59
回答 1查看 1K关注 0票数 0

我想在我导出的文件中添加标题。我使用的是kartik Export in Yii2。我所期望的结果是这样的:

这是我的观点:https://pastebin.com/HDeuQnfj

有人能帮我找到解决方案吗?这对我有很大帮助。提前感谢

EN

回答 1

Stack Overflow用户

发布于 2017-07-27 12:51:31

这并不是超级容易的。如果你只想把文本放在PDF的页眉中,试试:

代码语言:javascript
运行
复制
echo ExportMenu::widget([
    'dataProvider' => $dataProvider,
    'columns' => $gridColumns,
    'filename' => 'Exported File',
    'fontAwesome' => true,
    'exportConfig' => [
        ExportMenu::FORMAT_PDF => [
            'pdfConfig' => [
                'methods' => [
                    'SetHeader' => ['Your Title Here'], 
                ],
            ],
        ],
    ],
]);

但是如果你想把它放在PDF的正文中,我想你必须扩展kartik\export\ExportMenu并覆盖renderPDF(),如下所示:

代码语言:javascript
运行
复制
class MyExportMenu extends \kartik\export\ExportMenu
{
    protected function renderPDF($file)
    {
        //  Default PDF paper size
        $excel = $this->_objPHPExcel;
        $sheet = $this->_objPHPExcelSheet;
        /**
         * @var \PHPExcel_Writer_HTML $w
         */
        $w = $this->_objPHPExcelWriter;
        $page = $sheet->getPageSetup();
        $orientation = $page->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
        $properties = $excel->getProperties();
        $settings = ArrayHelper::getValue($this->exportConfig, $this->_exportType, []);
        $useInlineCss = ArrayHelper::getValue($settings, 'useInlineCss', false);
        $config = ArrayHelper::getValue($settings, 'pdfConfig', []);
        $w->setUseInlineCss($useInlineCss);
        $config = array_replace_recursive(
            [
                'orientation' => strtoupper($orientation),
                'methods' => [
                    'SetTitle' => $properties->getTitle(),
                    'SetAuthor' => $properties->getCreator(),
                    'SetCreator' => $properties->getCreator(),
                    'SetSubject' => $properties->getSubject(),
                    'SetKeywords' => $properties->getKeywords(),
                ],
                'cssFile' => '',
                'content' => '<h1>Your Title Here</h1>' // <- title here
                    . $w->generateHTMLHeader(false) 
                    . $w->generateSheetData() 
                    . $w->generateHTMLFooter(),
            ],
            $config
        );
        if (!$this->stream) {
            $config['destination'] = Pdf::DEST_FILE;
            $config['filename'] = $file;
        } else {
            $config['destination'] = Pdf::DEST_DOWNLOAD;
            $extension = ArrayHelper::getValue($settings, 'extension', 'pdf');
            $config['filename'] = $this->filename . '.' . $extension;
        }
        $pdf = new Pdf($config);
        echo $pdf->render();
    }
}

然后你必须使用你的类来代替。我不能百分之百确定它是否有效,没有经过测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45340205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档