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

如何在我们使用Yii2中的export kartik下载的文档中添加标题?,yii,yii2,export,kartik-v,Yii,Yii2,Export,Kartik V,我想在导出的文件中添加标题。 我正在Yii2中使用kartik Export。我预期的结果如下: 以下是我的看法: 谁能帮我找到解决办法吗?这对我有很大帮助。提前谢谢这可不太容易。如果您只想将文本放在PDF标题中,请尝试: echo ExportMenu::widget([ 'dataProvider' => $dataProvider, 'columns' => $gridColumns, 'filename' => 'Exported File'

我想在导出的文件中添加标题。 我正在Yii2中使用
kartik Export
。我预期的结果如下:

以下是我的看法:


谁能帮我找到解决办法吗?这对我有很大帮助。提前谢谢

这可不太容易。如果您只想将文本放在PDF标题中,请尝试:

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
并覆盖
renderpf()
如下:

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();
    }
}
类MyExportMenu扩展\kartik\export\ExportMenu
{
受保护的函数renderPDF($file)
{
//默认PDF纸张大小
$excel=$this->_objPHPExcel;
$sheet=$this->_objPHPExcelSheet;
/**
*@var\PHPExcel\u Writer\u HTML$w
*/
$w=$this->_objPHPExcelWriter;
$page=$sheet->getPageSetup();
$orientation=$page->getOrientation()==PHPExcel_工作表_页面设置::orientation_横向?'L':'P';
$properties=$excel->getProperties();
$settings=ArrayHelper::getValue($this->exportConfig,$this->\u exportType,[]);
$useInlineCss=ArrayHelper::getValue($settings,'useInlineCss',false);
$config=ArrayHelper::getValue($settings,'pdfConfig',[]);
$w->setUseInlineCss($useInlineCss);
$config=array\u replace\u递归(
[
“方向”=>strtoupper($orientation),
“方法”=>[
'SetTitle'=>$properties->getTitle(),
'SetAuthor'=>$properties->getCreator(),
“SetCreator”=>$properties->getCreator(),
“SetSubject”=>$properties->getSubject(),
'SetKeywords'=>$properties->getKeywords(),
],
“cssFile'=>”,
'content'=>'您的标题在这里'//generateHTMLHeader(false)
.$w->generateSheetData()
.$w->generateHTMLFooter(),
],
$config
);
如果(!$this->stream){
$config['destination']=Pdf::DEST_文件;
$config['filename']=$file;
}否则{
$config['destination']=Pdf::DEST_下载;
$extension=ArrayHelper::getValue($settings,'extension','pdf');
$config['filename']=$this->filename.'..$扩展名;
}
$pdf=新pdf($config);
echo$pdf->render();
}
}

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

这并不是非常简单。如果您只想将文本放在PDF标题中,请尝试:

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
并覆盖
renderpf()
如下:

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();
    }
}
类MyExportMenu扩展\kartik\export\ExportMenu
{
受保护的函数renderPDF($file)
{
//默认PDF纸张大小
$excel=$this->_objPHPExcel;
$sheet=$this->_objPHPExcelSheet;
/**
*@var\PHPExcel\u Writer\u HTML$w
*/
$w=$this->_objPHPExcelWriter;
$page=$sheet->getPageSetup();
$orientation=$page->getOrientation()==PHPExcel_工作表_页面设置::orientation_横向?'L':'P';
$properties=$excel->getProperties();
$settings=ArrayHelper::getValue($this->exportConfig,$this->\u exportType,[]);
$useInlineCss=ArrayHelper::getValue($settings,'useInlineCss',false);
$config=ArrayHelper::getValue($settings,'pdfConfig',[]);
$w->setUseInlineCss($useInlineCss);
$config=array\u replace\u递归(
[
“方向”=>strtoupper($orientation),
“方法”=>[
'SetTitle'=>$properties->getTitle(),
'SetAuthor'=>$properties->getCreator(),
“SetCreator”=>$properties->getCreator(),
“SetSubject”=>$properties->getSubject(),
'SetKeywords'=>$properties->getKeywords(),
],
“cssFile'=>”,
'content'=>'您的标题在这里'//generateHTMLHeader(false)
.$w->generateSheetData()
.$w->generateHTMLFooter(),
],
$config
);
如果(!$this->stream){
$config['destination']=Pdf::DEST_文件;
$config['filename']=$file;
}否则{
$config['destination']=Pdf::DEST_下载;
$extension=ArrayHelper::getValue($settings,'extension','pdf');
$config['filename']=$this->filename.'..$扩展名;
}
$pdf=新pdf($config);
echo$pdf->render();
}
}

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

谢谢你的回答。顺便说一句,你能看看我的问题吗?我想导出一个文档中的所有表谢谢你的回答。顺便说一句,你能看看我的问题吗?我想导出一个文档中的所有表