-
Notifications
You must be signed in to change notification settings - Fork 526
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 are broken / doesn't validate against Office 2013 XML #382
Comments
@simplyray Thanks for the issue. Where can i find the xsd for validating pptx file against Office 2013 XML formats ? (And may be Office 2007 & 2010) |
@Progi1984 I've used the Open XML SDK Tool from Microsoft. It also includes validation for 2007 and 2010) |
Todo :
|
PR relative to this issue : #390 |
See comment on #353 $objWriter->writeElementIf($hPercent != null, 'c:hPercent', 'val', $hPercent . '%'); |
@Progi1984 Do you know when this fix will be released? Currently unable to do any bar charts without ppt being broken and need repairing (but no chart showing up). Happy to test in any way I can. |
@dlollman You can test this branch and give your feedback. |
@Progi1984 Thanks, no good for that branch for me. Using Powerpoint for mac (microsoft). Relevant code I am using to test this out: $current_slide++;
// Slide 5 (REDACTED)
// Create slide
////echo date('H:i:s') . ' Create slide '.$current_slide.EOL;
$slides[$current_slide] = $objPHPPresentation->createSlide();
$slides[$current_slide]->setName('REDACTED');
$slides[$current_slide]->setBackground($oBkgImageSlide);
$richtext = $slides[$current_slide]->createRichTextShape()
->setHeight($slide_style["data_slide"]["dimensions"]["height"])
->setWidth($slide_style["data_slide"]["dimensions"]["width"])
->setOffsetX($slide_style["data_slide"]["dimensions"]["offsetx"])
->setOffsetY($slide_style["data_slide"]["dimensions"]["offsety"]);
$textRun = $richtext->createTextRun('REDACTED');
$textRun->getFont()->setSize($slide_style["data_slide"]["font"]["size"])
->setItalic($slide_style["data_slide"]["font"]["italic"])
->setColor(new Color($slide_style["data_slide"]["font"]["color"]));
//add bar chart
$oFill = new Fill();
$oFill->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFE06B20'));
$oShadow = new Shadow();
$oShadow->setVisible(true)->setDirection(45)->setDistance(10);
$series1Data = array('Jan' => 133, 'Feb' => 99, 'Mar' => 191, 'Apr' => 205, 'May' => 167, 'Jun' => 201, 'Jul' => 240, 'Aug' => 226, 'Sep' => 255, 'Oct' => 264, 'Nov' => 283, 'Dec' => 293);
$series2Data = array('Jan' => 266, 'Feb' => 198, 'Mar' => 271, 'Apr' => 305, 'May' => 267, 'Jun' => 301, 'Jul' => 340, 'Aug' => 326, 'Sep' => 344, 'Oct' => 364, 'Nov' => 383, 'Dec' => 379);
// Create a bar chart (that should be inserted in a shape)
echo date('H:i:s') . ' Create a bar chart (that should be inserted in a chart shape)'.EOL;
$barChart = new Bar();
$barChart->setGapWidthPercent(158);
$series1 = new Series('2009', $series1Data);
$series1->setShowSeriesName(true);
$series1->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new StyleColor('FF4F81BD'));
$series1->getFont()->getColor()->setRGB('00FF00');
$series1->getDataPointFill(2)->setFillType(Fill::FILL_SOLID)->setStartColor(new StyleColor('FFE06B20'));
$series2 = new Series('2010', $series2Data);
$series2->setShowSeriesName(true);
$series2->getFont()->getColor()->setRGB('FF0000');
$series2->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new StyleColor('FFC0504D'));
$series2->setLabelPosition(Series::LABEL_INSIDEEND);
$barChart->addSeries($series1);
$barChart->addSeries($series2);
// Create a shape (chart)
echo date('H:i:s') . ' Create a shape (chart)'.EOL;
$shape = $slides[$current_slide]->createChartShape();
$shape->setName('PHPPresentation Monthly Downloads')
->setResizeProportional(false)
->setHeight(550)
->setWidth(700)
->setOffsetX(120)
->setOffsetY(80);
$shape->setShadow($oShadow);
$shape->setFill($oFill);
$shape->getBorder()->setLineStyle(Border::LINE_SINGLE);
$shape->getTitle()->setText('PHPPresentation Monthly Downloads');
$shape->getTitle()->getFont()->setItalic(true);
$shape->getTitle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$shape->getPlotArea()->getAxisX()->setTitle('Month');
$shape->getPlotArea()->getAxisY()->getFont()->getColor()->setRGB('00FF00');
$shape->getPlotArea()->getAxisY()->setTitle('Downloads');
$shape->getPlotArea()->setType($barChart);
$shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE);
$shape->getLegend()->getFont()->setItalic(true); |
@Progi1984 is there anything else I can try here to help out? |
@Progi1984 That comment has a commit referencing a change for sample 20 which seems to not have any bearing on sample 5 (charts), can you confirm what you want me to do? Thanks so much |
PHPOffice#382 : Fixes ECMA-376
I may have fixed this file for PowerPoint2007 files... I must check each rendering in Office. |
PHPOffice#382 : Fixes OpenDocument/ECMA-376
PHPOffice#382 : Fixes OpenDocument
…ert::assertFileExists() must be of the type string, null given
…be suppressed on further calls
…tion\Tests\Style\AlignmentTest::setExpectedException()
…notations\AnnotationException
#382 : Validation for Powerpoint2007 & OpenDocument
@Zetkolink @pcholewa From #507 Hi here, The PR has been finally fixed... Could you test on develop branch and give me some feedback ? |
Hi, im trying to create charts, i have the same problem... somebody can? |
* Fix. Text is subscripted when set superscript to false Reset the subscript to false only when superscript is true Reset the superscript to false only when subscript is true Update Testcases * Fix. Some coding style issues * Fix. Use space insteadof tab * Remove temp file tempnam() creates a file that is not removed. Only $pFilename . '.xlsx' is removed by $this->writeSpreadsheet(). * PHP 5.3 is not supported anymore by Travis CI : https://docs.travis-ci.com/user/languages/php/ * PHPOffice#382 : Improve tests for validating the OOXML Schema * PHPOffice#382 : Validation for Open XML * PHPOffice#382 : Validation for Open XML * PHPOffice#382 : Validation for OpenDocument * PHPOffice#382 : OpenXML (ISO 29500-1 Strict) * PHPOffice#382 : OpenXML (ISO 29500-1 Strict) * FIXED : Missing argument 1 for phpDocumentor\Descriptor\Collection::get() * PHPOffice#360 : Changelog * PHPOffice#397 : PowerPoint2007 Reader : Background Color based on SchemeColor * PHPOffice#355 : Doughnut Chart * PHPOffice#355 : Doughnut Chart (Changelog & Tests & WIP ODPresentation) * PHPOffice#355 : - ODPresentation Writer : Doughnut Chart - ODPresentation Writer : Support for the position of Legend * PHPOffice#355 : Fix PHPCS * PHPOffice#355 : Array to string conversion (PHPPresentation/src/PhpPresentation/Writer/PowerPoint2007/LayoutPack/TemplateBased.php:73) * PHPOffice#355 : PHP 7.1 is now supported * PHPOffice#370 : PhpOffice\PhpPresentation\Style\Color : Define only the transparency * PHPOffice#370 : PowerPoint2007 Writer : Support for fill for transparent image * PHPOffice#370 : ODPresentation Writer : Support for fill for transparent image * PHPOffice#370 : ODPresentation Reader : Support for fill for image * PHPOffice#370 : PowerPoint2007 Reader : Support for fill for image * PHPOffice#382 : PowerPoint2007 Writer (Validation) * PHPOffice#382 : Replacement PHPDoc (return self => return ) * PHPOffice#382 : Replacement (rand => mt_rand) * PHPOffice#382 : ODPresentation Writer (Validation) * PHPOffice#382 : ODPresentation Writer (Validation) * PHPOffice#382 : PHPCS Fixes * PHPOffice#382 : PHPUnit fixes (PHP 5.4) * refactoring and reducing cyclomatic complexity * remove extra space * adding new line at the end of the file * Use PHPUnit\Framework\TestCase instead of PHPUnit_Framework_TestCase * PHPOffice#382 : Fixes nefore merge * PHPOffice#382 : Fixes Sample 20 * problems accessing files the casing didn't match the case of the folder names. the vendor autoload is in a different folder... * Update Sample_Header.php * Update Sample_Header.php * Update Sample_Header.php * Update Sample_Header.php added some checks to make sure that the sample outputs are set up correctly. * Update Sample_Header.php more checks to make sure the sample code can run * Fixes some CS * Refactoring tests * Trailing whitespaces Signed-off-by: Gabriel Caruso <[email protected]> * Remove extra lines Signed-off-by: Gabriel Caruso <[email protected]> * Simplify return * Change group shape extents to reflect content width/height. Previously the group extents where calculated based on the extents of the containing shapes using the slide/container of the group as the point of reference. This would result in the group being larger than needed; especially noticable for a large X or Y offest. * Remove % signs from PptCharts to fix chart generation. Fixes PHPOffice#452 * Solve Problems with png transparencies * Update .travis.yml * Use proper name for `ext-gd` `ext-gd2` is not recognized by composer and should instead be `ext-gd`. * Create auto_assign.yml * Fix PHP Docs * Fix Regression PHP Docs int->float * Fix double aray in PHPDocs Fix Typing * Update .travis.yml * FIXED : Validation of the composer.json * PHPOffice#382 Update Composer * PHPOffice#382 : Fixes ECMA-376 * PHPOffice#382 : Fixes ECMA-376 * PHPOffice#382 : Fixes OpenDocument * PHPOffice#382 : Fixes OpenDocument * Update composer.json * Update composer.json * Composer : PHPUnit * PHPOffice#382 : Remove options not compatible with latest phpunit version * PHPOffice#382 : TypeError: Argument 2 passed to PHPUnit\Framework\Assert::assertFileExists() must be of the type string, null given * PHPOffice#382 : The each() function is deprecated. This message will be suppressed on further calls * PHPOffice#382 : Error: Call to undefined method PhpOffice\PhpPresentation\Tests\Style\AlignmentTest::setExpectedException() * PHPOffice#382 : PHPCS Fixes * PHPOffice#382 : PHPDoc : PHP Fatal error: Uncaught Doctrine\Common\Annotations\AnnotationException * PHPOffice#540 : Disable documentation * PHPOffice#540 : Disable documentation * fix other image mime type * Drop the support for HHVM * Add support for image hyperlinks * Update CHANGELOD.md * Display hyperlink properties of Drawing\Gd shape
Hi, is there any way to make charts work? I tried creating a few, but I always get "Repairment needed" message. Interestingly enough, in Sample_05_Chart two slides are actually created: a 3D pie chart and a non-3D pie chart, other slides are blank. Any idea why? |
@dsjkaa same problem here, any solution ? |
Is there already a solution for this problem? You cannot use generated PPTX files with charts in current Office versions. I have already tested the dev-master. Thanks to you Ingo |
Lastly, thank you to the developers and all contributors for this library. EDIT: Or you can just simply use the develop branch by specifying "dev-develop" in your composer.json. And also, for the file generated using develop branch, I found no validation error when validating it using Open XML SDK 2.5. |
Hi all, I think it is fixed on develop branch. Could you check it @akmalirfan @ingo-lorenz @MehdiAroui @AlexanderKulia ? |
Yes it is. Thanks @Progi1984 |
I'm using the latest 0.9.0 release but the file generated from the Sample_05_Chart.php is broken and Powerpoint 2016 needs to repair the file before opening it (which removes the charts completly).
Sample_05_Chart.pptx
I've tried to validate the generated *.pptx file against Office 2013 XML formats and it throws 218 errors. Seems like every value for the attribute 'val' is a string having a percentage sign behind it instead of Int32
The text was updated successfully, but these errors were encountered: