#59434 - Cannot add a picture on a slide that already have an image with an hyperlink on it
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1742816 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
61f84af565
commit
f850d93b68
@ -359,6 +359,9 @@ public class POIXMLDocumentPart {
|
|||||||
String ppn = part.getPackagePart().getPartName().getName();
|
String ppn = part.getPackagePart().getPartName().getName();
|
||||||
try {
|
try {
|
||||||
for (PackageRelationship pr : packagePart.getRelationships()) {
|
for (PackageRelationship pr : packagePart.getRelationships()) {
|
||||||
|
if (pr.getTargetMode() == TargetMode.EXTERNAL) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
PackagePart pp = packagePart.getRelatedPart(pr);
|
PackagePart pp = packagePart.getRelatedPart(pr);
|
||||||
if (ppn.equals(pp.getPartName().getName())) {
|
if (ppn.equals(pp.getPartName().getName())) {
|
||||||
return pr;
|
return pr;
|
||||||
|
@ -37,13 +37,15 @@ import java.util.Collection;
|
|||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
|
|
||||||
|
import org.apache.poi.POIDataSamples;
|
||||||
import org.apache.poi.POIXMLDocumentPart;
|
import org.apache.poi.POIXMLDocumentPart;
|
||||||
import org.apache.poi.POIXMLDocumentPart.RelationPart;
|
import org.apache.poi.POIXMLDocumentPart.RelationPart;
|
||||||
import org.apache.poi.sl.usermodel.PaintStyle;
|
import org.apache.poi.sl.usermodel.PictureData;
|
||||||
import org.apache.poi.sl.usermodel.PictureData.PictureType;
|
import org.apache.poi.sl.usermodel.PictureData.PictureType;
|
||||||
import org.apache.poi.xslf.usermodel.DrawingParagraph;
|
import org.apache.poi.xslf.usermodel.DrawingParagraph;
|
||||||
import org.apache.poi.xslf.usermodel.DrawingTextBody;
|
import org.apache.poi.xslf.usermodel.DrawingTextBody;
|
||||||
import org.apache.poi.xslf.usermodel.XMLSlideShow;
|
import org.apache.poi.xslf.usermodel.XMLSlideShow;
|
||||||
|
import org.apache.poi.xslf.usermodel.XSLFHyperlink;
|
||||||
import org.apache.poi.xslf.usermodel.XSLFPictureData;
|
import org.apache.poi.xslf.usermodel.XSLFPictureData;
|
||||||
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
|
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
|
||||||
import org.apache.poi.xslf.usermodel.XSLFRelation;
|
import org.apache.poi.xslf.usermodel.XSLFRelation;
|
||||||
@ -56,6 +58,7 @@ import org.junit.Test;
|
|||||||
|
|
||||||
|
|
||||||
public class TestXSLFBugs {
|
public class TestXSLFBugs {
|
||||||
|
private static final POIDataSamples slTests = POIDataSamples.getSlideShowInstance();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void bug51187() throws Exception {
|
public void bug51187() throws Exception {
|
||||||
@ -416,15 +419,17 @@ public class TestXSLFBugs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void bug55791a() {
|
public void bug55791a() throws IOException {
|
||||||
XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("45541_Footer.pptx");
|
XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("45541_Footer.pptx");
|
||||||
removeAndCreateSlide(ppt);
|
removeAndCreateSlide(ppt);
|
||||||
|
ppt.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void bug55791b() {
|
public void bug55791b() throws IOException {
|
||||||
XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("SampleShow.pptx");
|
XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("SampleShow.pptx");
|
||||||
removeAndCreateSlide(ppt);
|
removeAndCreateSlide(ppt);
|
||||||
|
ppt.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeAndCreateSlide(XMLSlideShow ppt) {
|
private void removeAndCreateSlide(XMLSlideShow ppt) {
|
||||||
@ -440,4 +445,31 @@ public class TestXSLFBugs {
|
|||||||
assertNotNull(ps.getPictureData());
|
assertNotNull(ps.getPictureData());
|
||||||
ppt.close();
|
ppt.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void bug59434() throws IOException {
|
||||||
|
String url1 = "http://poi.apache.org/changes.html";
|
||||||
|
String url2 = "http://poi.apache.org/faq.html";
|
||||||
|
XMLSlideShow ppt1 = new XMLSlideShow();
|
||||||
|
PictureData pd1 = ppt1.addPicture(slTests.readFile("tomcat.png"), PictureType.PNG);
|
||||||
|
PictureData pd2 = ppt1.addPicture(slTests.readFile("santa.wmf"), PictureType.WMF);
|
||||||
|
XSLFSlide slide = ppt1.createSlide();
|
||||||
|
XSLFPictureShape ps1 = slide.createPicture(pd1);
|
||||||
|
ps1.setAnchor(new Rectangle2D.Double(20, 20, 100, 100));
|
||||||
|
XSLFHyperlink hl1 = ps1.createHyperlink();
|
||||||
|
hl1.linkToUrl(url1);
|
||||||
|
XSLFPictureShape ps2 = slide.createPicture(pd2);
|
||||||
|
ps2.setAnchor(new Rectangle2D.Double(120, 120, 100, 100));
|
||||||
|
XSLFHyperlink hl2 = ps2.createHyperlink();
|
||||||
|
hl2.linkToUrl(url2);
|
||||||
|
XMLSlideShow ppt2 = XSLFTestDataSamples.writeOutAndReadBack(ppt1);
|
||||||
|
ppt1.close();
|
||||||
|
slide = ppt2.getSlides().get(0);
|
||||||
|
ps1 = (XSLFPictureShape)slide.getShapes().get(0);
|
||||||
|
ps2 = (XSLFPictureShape)slide.getShapes().get(1);
|
||||||
|
assertEquals(url1, ps1.getHyperlink().getAddress());
|
||||||
|
assertEquals(url2, ps2.getHyperlink().getAddress());
|
||||||
|
|
||||||
|
ppt2.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user