From a5375147a107d4df0d26ca997093c51d86ff3cff Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Sun, 26 Feb 2012 06:22:09 +0000 Subject: [PATCH] Bugzilla 52255 - support adding TIFF,EPS and WPG pictures in OOXML documents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1293748 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../poi/xslf/usermodel/XSLFPictureData.java | 27 +++++++++++++++- .../poi/xslf/usermodel/XSLFRelation.java | 24 ++++++++++++++ .../poi/xssf/usermodel/XSSFPictureData.java | 7 +++- .../poi/xssf/usermodel/XSSFRelation.java | 32 +++++++++++++++++++ .../poi/xssf/usermodel/XSSFWorkbook.java | 9 ++++++ .../apache/poi/xwpf/usermodel/Document.java | 22 ++++++++++++- .../poi/xwpf/usermodel/XWPFPictureData.java | 6 +++- .../poi/xwpf/usermodel/XWPFRelation.java | 30 ++++++++++++++++- .../poi/xwpf/usermodel/TestXWPFDocument.java | 21 ++++++++++++ 10 files changed, 174 insertions(+), 5 deletions(-) diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 45a875eb1f..721c503758 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 52255 - support adding TIFF,EPS and WPG pictures in OOXML documents 52078 - avoid OutOfMemoryError when rendering groupped pictures in HSLF 52745 - fixed XSSFRichtextString.append to preserve leading / trailing spaces 52716 - tolerate hyperlinks that have neither location nor relation diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java index 5bf3703621..d51e1c0d26 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java @@ -71,13 +71,34 @@ public final class XSLFPictureData extends POIXMLDocumentPart { */ public static final int PICTURE_TYPE_GIF = 8; + /** + * Tag Image File (.tiff) + */ + public static final int PICTURE_TYPE_TIFF = 9; + + /** + * Encapsulated Postscript (.eps) + */ + public static final int PICTURE_TYPE_EPS = 10; + + + /** + * Windows Bitmap (.bmp) + */ + public static final int PICTURE_TYPE_BMP = 11; + + /** + * WordPerfect graphics (.wpg) + */ + public static final int PICTURE_TYPE_WPG = 12; + /** * Relationships for each known picture type */ protected static final POIXMLRelation[] RELATIONS; static { - RELATIONS = new POIXMLRelation[9]; + RELATIONS = new POIXMLRelation[13]; RELATIONS[PICTURE_TYPE_EMF] = XSLFRelation.IMAGE_EMF; RELATIONS[PICTURE_TYPE_WMF] = XSLFRelation.IMAGE_WMF; RELATIONS[PICTURE_TYPE_PICT] = XSLFRelation.IMAGE_PICT; @@ -85,6 +106,10 @@ public final class XSLFPictureData extends POIXMLDocumentPart { RELATIONS[PICTURE_TYPE_PNG] = XSLFRelation.IMAGE_PNG; RELATIONS[PICTURE_TYPE_DIB] = XSLFRelation.IMAGE_DIB; RELATIONS[PICTURE_TYPE_GIF] = XSLFRelation.IMAGE_GIF; + RELATIONS[PICTURE_TYPE_TIFF] = XSLFRelation.IMAGE_TIFF; + RELATIONS[PICTURE_TYPE_EPS] = XSLFRelation.IMAGE_EPS; + RELATIONS[PICTURE_TYPE_BMP] = XSLFRelation.IMAGE_BMP; + RELATIONS[PICTURE_TYPE_WPG] = XSLFRelation.IMAGE_WPG; } private Long checksum = null; diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java index a1d1b51100..e23b5a3361 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java @@ -182,6 +182,30 @@ public class XSLFRelation extends POIXMLRelation { "/ppt/media/image#.gif", XSLFPictureData.class ); + public static final XSLFRelation IMAGE_TIFF = new XSLFRelation( + "image/tiff", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/ppt/media/image#.tiff", + XSLFPictureData.class + ); + public static final XSLFRelation IMAGE_EPS = new XSLFRelation( + "image/x-eps", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/ppt/media/image#.eps", + XSLFPictureData.class + ); + public static final XSLFRelation IMAGE_BMP = new XSLFRelation( + "image/x-ms-bmp", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/ppt/media/image#.bmp", + XSLFPictureData.class + ); + public static final XSLFRelation IMAGE_WPG = new XSLFRelation( + "image/x-wpg", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/ppt/media/image#.wpg", + XSLFPictureData.class + ); public static final XSLFRelation IMAGES = new XSLFRelation( null, diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java index 814ef73354..391db1ea4e 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java @@ -39,13 +39,18 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData { */ protected static final POIXMLRelation[] RELATIONS; static { - RELATIONS = new POIXMLRelation[8]; + RELATIONS = new POIXMLRelation[13]; RELATIONS[Workbook.PICTURE_TYPE_EMF] = XSSFRelation.IMAGE_EMF; RELATIONS[Workbook.PICTURE_TYPE_WMF] = XSSFRelation.IMAGE_WMF; RELATIONS[Workbook.PICTURE_TYPE_PICT] = XSSFRelation.IMAGE_PICT; RELATIONS[Workbook.PICTURE_TYPE_JPEG] = XSSFRelation.IMAGE_JPEG; RELATIONS[Workbook.PICTURE_TYPE_PNG] = XSSFRelation.IMAGE_PNG; RELATIONS[Workbook.PICTURE_TYPE_DIB] = XSSFRelation.IMAGE_DIB; + RELATIONS[XSSFWorkbook.PICTURE_TYPE_GIF] = XSSFRelation.IMAGE_GIF; + RELATIONS[XSSFWorkbook.PICTURE_TYPE_TIFF] = XSSFRelation.IMAGE_TIFF; + RELATIONS[XSSFWorkbook.PICTURE_TYPE_EPS] = XSSFRelation.IMAGE_EPS; + RELATIONS[XSSFWorkbook.PICTURE_TYPE_BMP] = XSSFRelation.IMAGE_BMP; + RELATIONS[XSSFWorkbook.PICTURE_TYPE_WPG] = XSSFRelation.IMAGE_WPG; } /** diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java index 21094c4597..1f5c5120a9 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java @@ -191,6 +191,38 @@ public final class XSSFRelation extends POIXMLRelation { XSSFPictureData.class ); + public static final XSSFRelation IMAGE_GIF = new XSSFRelation( + "image/gif", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/xl/media/image#.gif", + XSSFPictureData.class + ); + + public static final XSSFRelation IMAGE_TIFF = new XSSFRelation( + "image/tiff", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/xl/media/image#.tiff", + XSSFPictureData.class + ); + public static final XSSFRelation IMAGE_EPS = new XSSFRelation( + "image/x-eps", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/xl/media/image#.eps", + XSSFPictureData.class + ); + public static final XSSFRelation IMAGE_BMP = new XSSFRelation( + "image/x-ms-bmp", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/xl/media/image#.bmp", + XSSFPictureData.class + ); + public static final XSSFRelation IMAGE_WPG = new XSSFRelation( + "image/x-wpg", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/xl/media/image#.wpg", + XSSFPictureData.class + ); + public static final XSSFRelation SHEET_COMMENTS = new XSSFRelation( "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 81e79ba51c..0c40d26fb1 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -81,6 +81,15 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable