phppresentation overflowing table problem

405 views Asked by At

Table going outside the slide

As the cell heigth increases the table height increases and makes the table go outside the slide thus i want the table to get divided and the part which is outside to come in the next slide Suppose the 3 rd row is coming outside the slide so send 3rd row in the next slide

<?php

include_once 'Sample_Header.php';

use PhpOffice\PhpPresentation\PhpPresentation;
use PhpOffice\PhpPresentation\Style\Border;
use PhpOffice\PhpPresentation\Style\Color;
use PhpOffice\PhpPresentation\Style\Fill;

// Create new PHPPresentation object
echo date('H:i:s') . ' Create new PHPPresentation object'.EOL;
$objPHPPresentation = new PhpPresentation();

// Set properties
echo date('H:i:s') . ' Set properties'.EOL;
$objPHPPresentation->getDocumentProperties()->setCreator('PHPOffice')
                                  ->setLastModifiedBy('PHPPresentation Team')
                                  ->setTitle('Sample 06 Title')
                                  ->setSubject('Sample 06 Subject')
                                  ->setDescription('Sample 06 Description')
                                  ->setKeywords('office 2007 openxml libreoffice odt php')
                                  ->setCategory('Sample Category');

// Remove first slide
echo date('H:i:s') . ' Remove first slide'.EOL;
$objPHPPresentation->removeSlideByIndex(0);

// Create slide
echo date('H:i:s') . ' Create slide'.EOL;
$currentSlide = createTemplatedSlide($objPHPPresentation);

// Create a shape (table)
echo date('H:i:s') . ' Create a shape (table)'.EOL;
$shape = $currentSlide->createTableShape(3);
$shape->setHeight(100);
$shape->setWidth(600);
$shape->setOffsetX(150);
$shape->setOffsetY(150);

// Add row
echo date('H:i:s') . ' Add row'.EOL;
$row = $shape->createRow();
$row->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR)
               ->setRotation(90)
               ->setStartColor(new Color('FFE06B20'))
               ->setEndColor(new Color('FFFFFFFF'));
$cell = $row->nextCell();
$cell->setColSpan(3);
$cell->createTextRun('askjbsakbcashbcashkbckashbkashhkasc')->getFont()->setBold(true)->setSize(16);
$cell->getBorders()->getBottom()->setLineWidth(4)
                                ->setLineStyle(Border::LINE_SINGLE)
                                ->setDashStyle(Border::DASH_DASH);
$cell->getActiveParagraph()->getAlignment()
    ->setMarginLeft(10);

// Add row
echo date('H:i:s') . ' Add row'.EOL;
$row = $shape->createRow();
$row->setHeight(20);
$row->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR)
               ->setRotation(90)
               ->setStartColor(new Color('FFE06B20'))
               ->setEndColor(new Color('FFFFFFFF'));
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasnjsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn')->getFont()->setBold(true);
$oCell->getActiveParagraph()->getAlignment()->setMarginLeft(20);
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasnjsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn')->getFont()->setBold(true);
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasnjsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn')->getFont()->setBold(true);

foreach ($row->getCells() as $cell) {
    $cell->getBorders()->getTop()->setLineWidth(4)
                                 ->setLineStyle(Border::LINE_SINGLE)
                                 ->setDashStyle(Border::DASH_DASH);
    // if($cell->getHeight()>20){
    //     $nextSlide = createTemplatedSlide($objPHPPresentation);
    // }
}
$nextSlide = createTemplatedSlide($objPHPPresentation);

// Add row
echo date('H:i:s') . ' Add row'.EOL;
$row = $shape->createRow();
$row->getFill()->setFillType(Fill::FILL_SOLID)
               ->setStartColor(new Color('FFE06B20'))
               ->setEndColor(new Color('FFE06B20'));
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');
$oCell->getActiveParagraph()->getAlignment()
    ->setMarginLeft(30)
    ->setTextDirection(\PhpOffice\PhpPresentation\Style\Alignment::TEXT_DIRECTION_VERTICAL_270);
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasnvjsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn ');
$oCell->getActiveParagraph()->getAlignment()
    ->setMarginBottom(10)
    ->setMarginTop(20)
    ->setMarginRight(30)
    ->setMarginLeft(40);
$oCell = $row->nextCell();
$oCell->createTextRun('vjsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasnjsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');

// Add row
echo date('H:i:s') . ' Add row'.EOL;
$row = $shape->createRow();
$row->getFill()->setFillType(Fill::FILL_SOLID)
               ->setStartColor(new Color('FFE06B20'))
               ->setEndColor(new Color('FFE06B20'));
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');
$oCell->getActiveParagraph()->getAlignment()->setMarginLeft(40);
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');
$oCell = $row->nextCell();
$oCell->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');

// Add row
echo date('H:i:s') . ' Add row'.EOL;
$row = $shape->createRow();
$row->getFill()->setFillType(Fill::FILL_SOLID)
               ->setStartColor(new Color('FFE06B20'))
               ->setEndColor(new Color('FFE06B20'));
$cellC1 = $row->nextCell();
$textRunC1 = $cellC1->createTextRun('Link');
$textRunC1->getHyperlink()->setUrl('https://github.com/PHPOffice/PHPPresentation/')->setTooltip('PHPPresentation');
$cellC1->getActiveParagraph()->getAlignment()->setMarginLeft(50);
$cellC2 = $row->nextCell();
$textRunC2 = $cellC2->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');
$textRunC2->getFont()->setBold(true);
$textRunC2->getFont()->setSize(12);
$textRunC2->getFont()->setColor(new Color('FF000000'));
$cellC2->createBreak();
$textRunC2 = $cellC2->createTextRun('jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');
$textRunC2->getFont()->setBold(true);
$textRunC2->getFont()->setSize(14);
$textRunC2->getFont()->setColor(new Color('FF0088FF'));
$cellC3 = $row->nextCell();
$textRunC3 = $cellC3->createTextRun('Link jsdhfljadnfkljancfancjklscnajklnacsjlnsajlcnasjlcnasjlcnlasncjlasnclasncjlasncljasncjlasncljasn');
$textRunC3->getHyperlink()->setUrl('https://github.com')->setTooltip('GitHub');
$cellC3->createBreak();
$textRunC3 = $cellC3->createTextRun('Link Google');
$textRunC3->getHyperlink()->setUrl('https://google.com')->setTooltip('Google');


// Save file
echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers);
if (!CLI) {
    include_once 'Sample_Footer.php';
}
1

There are 1 answers

2
user15398154 On
[<?php

include_once 'Sample_Header.php';

use PhpOffice\PhpPresentation\PhpPresentation;
use PhpOffice\PhpPresentation\Style\Color;
use PhpOffice\PhpPresentation\Style\Fill;


// Create new PHPPresentation object
echo date('H:i:s') . ' Create new PHPPresentation object'.EOL;
$objPHPPresentation = new PhpPresentation();

// Set properties
echo date('H:i:s') . ' Set properties'.EOL;
$objPHPPresentation->getDocumentProperties()->setCreator('PHPOffice')
                                  ->setLastModifiedBy('PHPPresentation Team')
                                  ->setTitle('Sample 06 Title')
                                  ->setSubject('Sample 06 Subject')
                                  ->setDescription('Sample 06 Description')
                                  ->setKeywords('office 2007 openxml libreoffice odt php')
                                  ->setCategory('Sample Category');

// Remove first slide
echo date('H:i:s') . ' Remove first slide'.EOL;
$objPHPPresentation->removeSlideByIndex(0);

// Create slide
echo date('H:i:s') . ' Create slide'.EOL;
$currentSlide = createTemplatedSlide($objPHPPresentation);

// Create a shape (table)
echo date('H:i:s') . ' Create a shape (table)'.EOL;
$shape = $currentSlide->createTableShape(3);
$shape->setHeight(100);
$shape->setWidth(600);
$shape->setOffsetX(150);
$shape->setOffsetY(150);

//info comming ftom database
$info = "abcdef";
$total = 0;
$rows = 0;

for($var=0;$var<50;$var++)
{
    // Add row
    $row+=1;
    addData();
    echo date('H:i:s') . ' Add row'.EOL.$total;
}

function addData(){
    global $total,$info,$objPHPPresentation,$shape;
    compare($objPHPPresentation);
    $row = $shape->createRow();
    $row->getFill()->setFillType(Fill::FILL_SOLID)
               ->setStartColor(new Color('FFE06B20'))
               ->setEndColor(new Color('FFE06B20'));
    $oCell = $row->nextCell();
    $oCell->createTextRun($info);
    $total += strlen($info);
    $oCell->getActiveParagraph()->getAlignment()
                                ->setMarginLeft(30)
                                ->setTextDirection(\PhpOffice\PhpPresentation\Style\Alignment::TEXT_DIRECTION_VERTICAL_270);
    $oCell = $row->nextCell();
    $oCell->createTextRun($info);
    $total += strlen($info);
    $oCell->getActiveParagraph()->getAlignment()
                                ->setMarginBottom(10)
                                ->setMarginTop(20)
                                ->setMarginRight(30)
                                ->setMarginLeft(40);
    $oCell = $row->nextCell();
    $oCell->createTextRun($info);
    $total += strlen($info);
}

function compare(){
    global $total,$objPHPPresentation,$shape,$row;
    if(!($total<180 && $row<12)){
        echo date('H:i:s') . ' Create slide'.EOL;
        $currentSlide = createTemplatedSlide($objPHPPresentation);
        echo date('H:i:s') . ' Create a shape (table)'.EOL;
        $shape = $currentSlide->createTableShape(3);
        $shape->setHeight(100);
        $shape->setWidth(600);
        $shape->setOffsetX(150);
        $shape->setOffsetY(150);
        $total = 0;
        $row = 0;
    }
}


// Save file
echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers);
if (!CLI) {
    include_once 'Sample_Footer.php';
}][1]