mirror of https://github.com/apache/poi.git
Bugzilla 52209: fixed inserting multiple pictures to a group or slide in XSLF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1203969 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e7ba4f6f8c
commit
ef049ea258
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.8-beta5" date="2011-??-??">
|
<release version="3.8-beta5" date="2011-??-??">
|
||||||
|
<action dev="poi-developers" type="fix">52209 - fixed inserting multiple pictures in XSLF </action>
|
||||||
<action dev="poi-developers" type="fix">51803 - fixed HSLF TextExtractor to extract content from master slide </action>
|
<action dev="poi-developers" type="fix">51803 - fixed HSLF TextExtractor to extract content from master slide </action>
|
||||||
<action dev="poi-developers" type="fix">52190 - null check on XWPF setFontFamily</action>
|
<action dev="poi-developers" type="fix">52190 - null check on XWPF setFontFamily</action>
|
||||||
<action dev="poi-developers" type="fix">52062 - ensure that temporary files in SXSSF are deleted</action>
|
<action dev="poi-developers" type="fix">52062 - ensure that temporary files in SXSSF are deleted</action>
|
||||||
|
|
|
@ -338,7 +338,7 @@ public class XMLSlideShow extends POIXMLDocument {
|
||||||
public int addPicture(byte[] pictureData, int format) {
|
public int addPicture(byte[] pictureData, int format) {
|
||||||
getAllPictures();
|
getAllPictures();
|
||||||
|
|
||||||
int imageNumber = getPackage().getPartsByName(Pattern.compile("/ppt/media/.*?")).size() + 1;
|
int imageNumber = _pictures.size() + 1;
|
||||||
XSLFPictureData img = (XSLFPictureData) createRelationship(
|
XSLFPictureData img = (XSLFPictureData) createRelationship(
|
||||||
XSLFPictureData.RELATIONS[format], XSLFFactory.getInstance(), imageNumber, true);
|
XSLFPictureData.RELATIONS[format], XSLFFactory.getInstance(), imageNumber, true);
|
||||||
_pictures.add(img);
|
_pictures.add(img);
|
||||||
|
|
|
@ -227,9 +227,13 @@ public class XSLFGroupShape extends XSLFShape {
|
||||||
public XSLFPictureShape createPicture(int pictureIndex){
|
public XSLFPictureShape createPicture(int pictureIndex){
|
||||||
|
|
||||||
List<PackagePart> pics = _sheet.getPackagePart().getPackage()
|
List<PackagePart> pics = _sheet.getPackagePart().getPackage()
|
||||||
.getPartsByName(Pattern.compile("/ppt/media/.*?"));
|
.getPartsByName(Pattern.compile("/ppt/media/image" + (pictureIndex + 1) + ".*?"));
|
||||||
|
|
||||||
PackagePart pic = pics.get(pictureIndex);
|
if(pics.size() == 0) {
|
||||||
|
throw new IllegalArgumentException("Picture with index=" + pictureIndex + " was not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
PackagePart pic = pics.get(0);
|
||||||
|
|
||||||
PackageRelationship rel = _sheet.getPackagePart().addRelationship(
|
PackageRelationship rel = _sheet.getPackagePart().addRelationship(
|
||||||
pic.getPartName(), TargetMode.INTERNAL, XSLFRelation.IMAGES.getRelation());
|
pic.getPartName(), TargetMode.INTERNAL, XSLFRelation.IMAGES.getRelation());
|
||||||
|
|
|
@ -172,9 +172,13 @@ public abstract class XSLFSheet extends POIXMLDocumentPart implements Iterable<X
|
||||||
|
|
||||||
public XSLFPictureShape createPicture(int pictureIndex){
|
public XSLFPictureShape createPicture(int pictureIndex){
|
||||||
List<PackagePart> pics = getPackagePart().getPackage()
|
List<PackagePart> pics = getPackagePart().getPackage()
|
||||||
.getPartsByName(Pattern.compile("/ppt/media/.*?"));
|
.getPartsByName(Pattern.compile("/ppt/media/image" + (pictureIndex + 1) + ".*?"));
|
||||||
|
|
||||||
PackagePart pic = pics.get(pictureIndex);
|
if(pics.size() == 0) {
|
||||||
|
throw new IllegalArgumentException("Picture with index=" + pictureIndex + " was not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
PackagePart pic = pics.get(0);
|
||||||
|
|
||||||
PackageRelationship rel = getPackagePart().addRelationship(
|
PackageRelationship rel = getPackagePart().addRelationship(
|
||||||
pic.getPartName(), TargetMode.INTERNAL, XSLFRelation.IMAGES.getRelation());
|
pic.getPartName(), TargetMode.INTERNAL, XSLFRelation.IMAGES.getRelation());
|
||||||
|
|
|
@ -841,18 +841,22 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
|
||||||
layout = measurer.nextLayout((float)wrappingWidth, nextBreak, false);
|
layout = measurer.nextLayout((float)wrappingWidth, nextBreak, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(layout == null) {
|
||||||
|
// exit if can't break any more
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
int endIndex = measurer.getPosition();
|
int endIndex = measurer.getPosition();
|
||||||
|
// skip over new line breaks (we paint 'clear' text runs not starting or ending with \n)
|
||||||
|
if(endIndex < it.getEndIndex() && text.charAt(endIndex) == '\n'){
|
||||||
|
measurer.setPosition(endIndex + 1);
|
||||||
|
}
|
||||||
|
|
||||||
TextAlign hAlign = getTextAlign();
|
TextAlign hAlign = getTextAlign();
|
||||||
if(hAlign == TextAlign.JUSTIFY || hAlign == TextAlign.JUSTIFY_LOW) {
|
if(hAlign == TextAlign.JUSTIFY || hAlign == TextAlign.JUSTIFY_LOW) {
|
||||||
layout = layout.getJustifiedLayout((float)wrappingWidth);
|
layout = layout.getJustifiedLayout((float)wrappingWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip over new line breaks (we paint 'clear' text runs not starting or ending with \n)
|
|
||||||
if(endIndex < it.getEndIndex() && text.charAt(endIndex) == '\n'){
|
|
||||||
measurer.setPosition(endIndex + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
AttributedString str = new AttributedString(it, startIndex, endIndex);
|
AttributedString str = new AttributedString(it, startIndex, endIndex);
|
||||||
TextFragment line = new TextFragment(
|
TextFragment line = new TextFragment(
|
||||||
layout, // we will not paint empty paragraphs
|
layout, // we will not paint empty paragraphs
|
||||||
|
|
Loading…
Reference in New Issue