From 119ac044d49b245e061d406533f7be7363959b5f Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Thu, 26 Jan 2006 18:27:52 +0000 Subject: [PATCH] Enabled *.ods, *.sdc and *.sxc conversion to PDF and therefore to TXT git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2223 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/mimetype-map.xml | 6 ++++++ .../alfresco/repo/content/MimetypeMap.java | 7 +++++++ .../transform/UnoContentTransformer.java | 19 ++++++++++++++++-- source/test-resources/quick/quick.ods | Bin 0 -> 7844 bytes source/test-resources/quick/quick.sdc | Bin 0 -> 31744 bytes source/test-resources/quick/quick.sxc | Bin 0 -> 7531 bytes 6 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 source/test-resources/quick/quick.ods create mode 100644 source/test-resources/quick/quick.sdc create mode 100644 source/test-resources/quick/quick.sxc diff --git a/config/alfresco/mimetype-map.xml b/config/alfresco/mimetype-map.xml index 25774a31ec..be73b29e78 100644 --- a/config/alfresco/mimetype-map.xml +++ b/config/alfresco/mimetype-map.xml @@ -329,6 +329,12 @@ sxw + + sxc + + + sdc + dwg diff --git a/source/java/org/alfresco/repo/content/MimetypeMap.java b/source/java/org/alfresco/repo/content/MimetypeMap.java index eae9b9036e..2c1b443462 100644 --- a/source/java/org/alfresco/repo/content/MimetypeMap.java +++ b/source/java/org/alfresco/repo/content/MimetypeMap.java @@ -54,6 +54,7 @@ public class MimetypeMap implements MimetypeService public static final String MIMETYPE_IMAGE_GIF = "image/gif"; public static final String MIMETYPE_IMAGE_JPEG = "image/jpeg"; public static final String MIMETYPE_IMAGE_RGB = "image/x-rgb"; + // Open Document public static final String MIMETYPE_OPENDOCUMENT_TEXT = "application/vnd.oasis.opendocument.text"; public static final String MIMETYPE_OPENDOCUMENT_TEXT_TEMPLATE = "application/vnd.oasis.opendocument.text-template"; public static final String MIMETYPE_OPENDOCUMENT_GRAPHICS = "application/vnd.oasis.opendocument.graphics"; @@ -71,8 +72,14 @@ public class MimetypeMap implements MimetypeService public static final String MIMETYPE_OPENDOCUMENT_TEXT_MASTER= "application/vnd.oasis.opendocument.text-master"; public static final String MIMETYPE_OPENDOCUMENT_TEXT_WEB= "application/vnd.oasis.opendocument.text-web"; public static final String MIMETYPE_OPENDOCUMENT_DATABASE= "application/vnd.oasis.opendocument.database"; + // Open Office public static final String MIMETYPE_OPENOFFICE_WRITER = "application/vnd.sun.xml.writer"; + public static final String MIMETYPE_OPENOFFICE_CALC = "application/vnd.sun.xml.calc"; + // Star Office + public static final String MIMETYPE_STAROFFICE5_SPREADSHEET = "application/vnd.stardivision.calc"; + // Audio public static final String MIMETYPE_MP3 = "audio/x-mpeg"; + // Alfresco public static final String MIMETYPE_ACP = "application/acp"; private static final String CONFIG_AREA = "mimetype-map"; diff --git a/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java b/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java index bc9f06b6ff..c86408a920 100644 --- a/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java +++ b/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java @@ -54,11 +54,26 @@ public class UnoContentTransformer extends AbstractContentTransformer formatsByConversion = new HashMap(17); formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE_WRITER, MimetypeMap.MIMETYPE_TEXT_PLAIN), - new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_SPREADSHEET, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_CALC, 1.0)); formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT, MimetypeMap.MIMETYPE_TEXT_PLAIN), new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE_WRITER, MimetypeMap.MIMETYPE_TEXT_PLAIN), + new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE_WRITER, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE_CALC, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_SPREADSHEET, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_TEXT_PLAIN, MimetypeMap.MIMETYPE_HTML), new DocumentFormatWrapper(DocumentFormat.HTML_WRITER, 1.0)); diff --git a/source/test-resources/quick/quick.ods b/source/test-resources/quick/quick.ods new file mode 100644 index 0000000000000000000000000000000000000000..ccb7abaf25ec696fa150f2a6113ba475d7bb2472 GIT binary patch literal 7844 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 literal 0 HcmV?d00001 diff --git a/source/test-resources/quick/quick.sxc b/source/test-resources/quick/quick.sxc new file mode 100644 index 0000000000000000000000000000000000000000..a7373d2b5a7cf1af57b48934d12a94e01ee0f689 GIT binary patch literal 7531 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 literal 0 HcmV?d00001