diff options
author | Andreas Beeker <kiwiwings@apache.org> | 2021-04-22 22:09:14 +0000 |
---|---|---|
committer | Andreas Beeker <kiwiwings@apache.org> | 2021-04-22 22:09:14 +0000 |
commit | 1d594451d8b0ebee8f771aae1b59080e46c982a0 (patch) | |
tree | e44fc121fe4f94e04c409bcec032cb4199331abf /poi-ooxml | |
parent | 48d3c6827086c2d0209852c08be37ef502fb4b0d (diff) | |
download | poi-1d594451d8b0ebee8f771aae1b59080e46c982a0.tar.gz poi-1d594451d8b0ebee8f771aae1b59080e46c982a0.zip |
#65228 - the method getCap() does not work correctly in xslf.usermodel.XSLFTextRun
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1889111 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-ooxml')
-rw-r--r-- | poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java | 10 | ||||
-rw-r--r-- | poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java | 34 |
2 files changed, 25 insertions, 19 deletions
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java index beb8c5a431..0ad4ef8743 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java @@ -65,6 +65,7 @@ public final class CharacterPropertyFetcher<T> extends PropertyFetcher<T> { if (!(sheet instanceof XSLFSlideMaster)) { fetchRunProp(); + fetchParagraphDefaultRunProp(); fetchShapeProp(shape); fetchThemeProp(shape); } @@ -78,6 +79,15 @@ public final class CharacterPropertyFetcher<T> extends PropertyFetcher<T> { fetchProp(run.getRPr(false)); } + private void fetchParagraphDefaultRunProp() { + if (!isSet()) { + CTTextParagraphProperties pr = run.getParagraph().getXmlObject().getPPr(); + if (pr != null) { + fetchProp(pr.getDefRPr()); + } + } + } + private void fetchShapeProp(XSLFShape shape) { if (!isSet()) { shape.fetchShapeProperty(this); diff --git a/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java b/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java index acbf365046..08250192ac 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java +++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java @@ -77,25 +77,7 @@ import org.apache.poi.sl.usermodel.TextShape; import org.apache.poi.sl.usermodel.VerticalAlignment; import org.apache.poi.util.IOUtils; import org.apache.poi.util.NullPrintStream; -import org.apache.poi.xslf.usermodel.XMLSlideShow; -import org.apache.poi.xslf.usermodel.XSLFAutoShape; -import org.apache.poi.xslf.usermodel.XSLFGroupShape; -import org.apache.poi.xslf.usermodel.XSLFHyperlink; -import org.apache.poi.xslf.usermodel.XSLFNotes; -import org.apache.poi.xslf.usermodel.XSLFObjectShape; -import org.apache.poi.xslf.usermodel.XSLFPictureData; -import org.apache.poi.xslf.usermodel.XSLFPictureShape; -import org.apache.poi.xslf.usermodel.XSLFRelation; -import org.apache.poi.xslf.usermodel.XSLFShape; -import org.apache.poi.xslf.usermodel.XSLFSlide; -import org.apache.poi.xslf.usermodel.XSLFSlideLayout; -import org.apache.poi.xslf.usermodel.XSLFSlideMaster; -import org.apache.poi.xslf.usermodel.XSLFTable; -import org.apache.poi.xslf.usermodel.XSLFTableCell; -import org.apache.poi.xslf.usermodel.XSLFTableRow; -import org.apache.poi.xslf.usermodel.XSLFTextBox; -import org.apache.poi.xslf.usermodel.XSLFTextParagraph; -import org.apache.poi.xslf.usermodel.XSLFTextRun; +import org.apache.poi.xslf.usermodel.*; import org.apache.poi.xslf.util.DummyGraphics2d; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @@ -1080,4 +1062,18 @@ class TestXSLFBugs { } } + @Test + public void bug65228() throws IOException { + try (XMLSlideShow ppt = openSampleDocument("bug65228.pptx")) { + TextRun.TextCap act = ppt.getSlides().stream() + .flatMap(s -> s.getShapes().stream()) + .filter(s -> "März 2021\u2026".equals(s.getShapeName())) + .map(XSLFTextShape.class::cast) + .flatMap(s -> s.getTextParagraphs().stream()) + .flatMap(s -> s.getTextRuns().stream()) + .map(XSLFTextRun::getTextCap) + .findFirst().orElse(null); + assertEquals(TextRun.TextCap.ALL, act); + } + } } |