Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Charts not generated when saving as PDF #2691

Open
mock1ngj opened this issue Oct 16, 2024 · 1 comment
Open

Charts not generated when saving as PDF #2691

mock1ngj opened this issue Oct 16, 2024 · 1 comment

Comments

@mock1ngj
Copy link

Describe the bug and add attachments

Ive tried switching the renderers for pdf (domPdf, tcpdf, mpdf) but the result is the same
image

Ive tried to convert the saved docx to pdf but the result is still the same. This is the docx output
image

Expected behavior

This but in PDF
image

Steps to reproduce


        $phpWord->addTitleStyle(1, ['size' => 14, 'bold' => true], ['keepNext' => true, 'spaceBefore' => 240]);
        $phpWord->addTitleStyle(2, ['size' => 14, 'bold' => true], ['keepNext' => true, 'spaceBefore' => 240]);

        // 2D charts
        $section = $phpWord->addSection();
        $section->addTitle('2D charts', 1);
        $section = $phpWord->addSection(['colsNum' => 2, 'breakType' => 'continuous']);

        $chartTypes = ['pie', 'doughnut', 'bar', 'column', 'line', 'area', 'scatter', 'radar', 'stacked_bar', 'percent_stacked_bar', 'stacked_column', 'percent_stacked_column'];
        $twoSeries = ['bar', 'column', 'line', 'area', 'scatter', 'radar', 'stacked_bar', 'percent_stacked_bar', 'stacked_column', 'percent_stacked_column'];
        $threeSeries = ['bar', 'line'];
        $categories = ['A', 'B', 'C', 'D', 'E'];
        $series1 = [1, 3, 2, 5, 4];
        $series2 = [3, 1, 7, 2, 6];
        $series3 = [8, 3, 2, 5, 4];
        $showGridLines = false;
        $showAxisLabels = false;
        $showLegend = true;
        $legendPosition = 't';
        // r = right, l = left, t = top, b = bottom, tr = top right

        foreach ($chartTypes as $chartType) {
            $section->addTitle(ucfirst($chartType), 2);
            $chart = $section->addChart($chartType, $categories, $series1);
            $chart->getStyle()->setWidth(Converter::inchToEmu(2.5))->setHeight(Converter::inchToEmu(2));
            $chart->getStyle()->setShowGridX($showGridLines);
            $chart->getStyle()->setShowGridY($showGridLines);
            $chart->getStyle()->setShowAxisLabels($showAxisLabels);
            $chart->getStyle()->setShowLegend($showLegend);
            $chart->getStyle()->setLegendPosition($legendPosition);
            if (in_array($chartType, $twoSeries)) {
                $chart->addSeries($categories, $series2);
            }
            if (in_array($chartType, $threeSeries)) {
                $chart->addSeries($categories, $series3);
            }
            $section->addTextBreak();
        }

        // 3D charts
        $section = $phpWord->addSection(['breakType' => 'continuous']);
        $section->addTitle('3D charts', 1);
        $section = $phpWord->addSection(['colsNum' => 2, 'breakType' => 'continuous']);

        $chartTypes = ['pie', 'bar', 'column', 'line', 'area'];
        $multiSeries = ['bar', 'column', 'line', 'area'];
        $style = [
                'width' => Converter::cmToEmu(5),
                'height' => Converter::cmToEmu(4),
                '3d' => true,
                'showAxisLabels' => $showAxisLabels,
                'showGridX' => $showGridLines,
                'showGridY' => $showGridLines,
            ];
        foreach ($chartTypes as $chartType) {
            $section->addTitle(ucfirst($chartType), 2);
            $chart = $section->addChart($chartType, $categories, $series1, $style);
            if (in_array($chartType, $multiSeries)) {
                $chart->addSeries($categories, $series2);
                $chart->addSeries($categories, $series3);
            }
            $section->addTextBreak();
        }

        //save to pdf
        Settings::setPdfRendererName(Settings::PDF_RENDERER_DOMPDF);
        Settings::setPdfRendererPath(base_path() . '/vendor/dompdf/dompdf');
        $writer = IOFactory::createWriter($phpWord, 'PDF');
        $writer->save('report.pdf');

        $writer = IOFactory::createWriter($phpWord, 'DOCX');
        $writer->save('sample.docx');`

### PHPWord version(s) where the bug happened

1.3.0

### PHP version(s) where the bug happened

8.1.2

### Priority

- [ ] I want to crowdfund the bug fix (with [@algora-io](https://docs.algora.io/bounties/overview)) and fund a community developer.
- [ ] I want to pay the bug fix and fund a maintainer for that. (Contact @Progi1984)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

2 participants
@mock1ngj and others