Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)

78537: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud)
      77398: MNT-11279: Docx Preview: FileName in the document header not previewing correctly
       - Keep original name during convertion.
       - Add unit testMNT-11279: Docx Preview: FileName in the document header not previewing correctly
       - Keep original name during convertion.
       - Add unit test


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@82590 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Erik Winlof
2014-09-03 12:29:43 +00:00
parent 71fd93443c
commit e429be8b8c
3 changed files with 69 additions and 11 deletions

View File

@@ -27,6 +27,7 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Date;
import net.sf.jooreports.converter.DocumentFamily;
import net.sf.jooreports.converter.DocumentFormat;
@@ -36,11 +37,7 @@ import net.sf.jooreports.openoffice.connection.OpenOfficeException;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.service.cmr.repository.ContentIOException;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.TransformationOptions;
import org.alfresco.service.cmr.repository.*;
import org.alfresco.util.TempFileProvider;
import org.apache.commons.logging.Log;
import org.apache.pdfbox.exceptions.COSVisitorException;
@@ -334,13 +331,23 @@ public abstract class OOoContentTransformerHelper extends ContentTransformerHelp
" writer: " + writer);
}
// MNT-11279 fix. Because of the creating temp files for transformations the document's header with file name field
// could be changed to temporary file's name.
// Get the original file name which was on upload.
String origFileName = getOriginalFileName(options);
// Create a temp folder and put source and target files into it. (i.e. tempFromFile and tempToFile will be placed
// into such folder)
File tempSubfolder = new File(TempFileProvider.getTempDir() + File.separator +
origFileName + "-" + getTempFilePrefix() + "-"
+ getTempFilePrefix() + "-" + new Date().getTime());
tempSubfolder.mkdir();
// create temporary files to convert from and to
File tempFromFile = TempFileProvider.createTempFile(
getTempFilePrefix()+"-source-",
"." + sourceExtension);
// The source file should have the name which was on upload
File tempFromFile = new File(tempSubfolder, origFileName );
File tempToFile = TempFileProvider.createTempFile(
getTempFilePrefix()+"-target-",
"." + targetExtension);
origFileName + "-" + getTempFilePrefix()+"-target-",
"." + targetExtension, tempSubfolder);
// There is a bug (reported in ALF-219) whereby JooConverter (the Alfresco Community Edition's 3rd party
// OpenOffice connector library) struggles to handle zero-size files being transformed to pdf.
@@ -376,6 +383,11 @@ public abstract class OOoContentTransformerHelper extends ContentTransformerHelp
" to file: " + tempToFile,
e);
}
catch (Throwable ee)
{
produceEmptyPdfFile(tempToFile);
getLogger().error("Convertation problem", ee);
}
}
if (getLogger().isDebugEnabled())
@@ -396,7 +408,12 @@ public abstract class OOoContentTransformerHelper extends ContentTransformerHelp
getLogger().debug("transformation successful");
}
}
private String getOriginalFileName(TransformationOptions options)
{
return transformerDebug == null ? null : transformerDebug.getFileName(options, true, -1);
}
private boolean temporaryMsFile(TransformationOptions options)
{
String fileName = transformerDebug == null ? null : transformerDebug.getFileName(options, true, -1);