fix trailing-whitespace

This commit is contained in:
Marcello Teodori
2022-02-23 23:04:36 +01:00
parent b055060537
commit 92d3f70f4e
46 changed files with 255 additions and 255 deletions

View File

@@ -10,7 +10,7 @@ Contains the common transformer (T-Engine) code, plus a few actual implementatio
[README](https://github.com/Alfresco/alfresco-transform-core/blob/master/alfresco-transformer-base/README.md) [README](https://github.com/Alfresco/alfresco-transform-core/blob/master/alfresco-transformer-base/README.md)
* `alfresco-transform-<name>` - multiple T-Engines; each one of them builds both a SpringBoot fat jar * `alfresco-transform-<name>` - multiple T-Engines; each one of them builds both a SpringBoot fat jar
and a [Docker image](https://github.com/Alfresco/alfresco-transform-core#docker) and a [Docker image](https://github.com/Alfresco/alfresco-transform-core#docker)
### Documentation ### Documentation
In addition to the subprojects (such as `alfresco-transformer-base` README above) some additional documentation can be found in: In addition to the subprojects (such as `alfresco-transformer-base` README above) some additional documentation can be found in:
@@ -52,7 +52,7 @@ and Alfresco Maven repository:
``` ```
#### Docker #### Docker
The core T-Engine images are available on Docker Hub. The core T-Engine images are available on Docker Hub.
Either as a single Core AIO (All-In-One) T-Engine: Either as a single Core AIO (All-In-One) T-Engine:
* [alfresco/alfresco-transform-core-aio](https://hub.docker.com/r/alfresco/alfresco-transform-core-aio) * [alfresco/alfresco-transform-core-aio](https://hub.docker.com/r/alfresco/alfresco-transform-core-aio)

View File

@@ -73,7 +73,7 @@ public class AIOController extends AbstractTransformerController
// TODO ATS-713 Currently uses the Misc probeTest. The implementation will need to be changed such that the test can be selected based on the required transform // TODO ATS-713 Currently uses the Misc probeTest. The implementation will need to be changed such that the test can be selected based on the required transform
@Override @Override
public ProbeTestTransform getProbeTestTransform() public ProbeTestTransform getProbeTestTransform()
{ {
// HtmlParserContentTransformer html -> text // HtmlParserContentTransformer html -> text
// See the Javadoc on this method and Probes.md for the choice of these values. // See the Javadoc on this method and Probes.md for the choice of these values.

View File

@@ -60,12 +60,12 @@
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr> <tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">page</div></td><td><input type="text" name="page" value="" /></td></tr> <tr><td><div style="text-align:right">page</div></td><td><input type="text" name="page" value="" /></td></tr>
<tr><td><div style="text-align:right">width</div></td><td><input type="text" name="width" value="" /></td></tr> <tr><td><div style="text-align:right">width</div></td><td><input type="text" name="width" value="" /></td></tr>
<tr><td><div style="text-align:right">height</div></td><td><input type="text" name="height" value="" /></td></tr> <tr><td><div style="text-align:right">height</div></td><td><input type="text" name="height" value="" /></td></tr>
<tr><td><div style="text-align:right">allowPdfEnlargement</div></td><td><input type="checkbox" name="allowPdfEnlargement" value="true" /></td></tr> <tr><td><div style="text-align:right">allowPdfEnlargement</div></td><td><input type="checkbox" name="allowPdfEnlargement" value="true" /></td></tr>
<tr><td><div style="text-align:right">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr> <tr><td><div style="text-align:right">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr> <tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table> </table>
</form> </form>

View File

@@ -34,13 +34,13 @@ public class AIOControllerHttpRequestTest extends AbstractHttpRequestTest
{ {
@Override @Override
protected String getTransformerName() protected String getTransformerName()
{ {
return "All in One Transformer"; return "All in One Transformer";
} }
@Override @Override
protected String getSourceExtension() protected String getSourceExtension()
{ {
// Currently using same extension as ImageMagick tests // Currently using same extension as ImageMagick tests
return "jpg"; return "jpg";

View File

@@ -56,7 +56,7 @@ public class AIOControllerImageMagickTest extends ImageMagickControllerTest
@BeforeEach @Override @BeforeEach @Override
public void before() throws IOException public void before() throws IOException
{ {
ReflectionTestUtils.setField(commandExecutor, "transformCommand", mockTransformCommand); ReflectionTestUtils.setField(commandExecutor, "transformCommand", mockTransformCommand);
ReflectionTestUtils.setField(commandExecutor, "checkCommand", mockCheckCommand); ReflectionTestUtils.setField(commandExecutor, "checkCommand", mockCheckCommand);
//Need to wire in the mocked commandExecutor into the controller... //Need to wire in the mocked commandExecutor into the controller...
@@ -67,7 +67,7 @@ public class AIOControllerImageMagickTest extends ImageMagickControllerTest
} }
@Override @Override
protected AbstractTransformerController getController() protected AbstractTransformerController getController()
{ {
return controller; return controller;
} }
@@ -97,7 +97,7 @@ public class AIOControllerImageMagickTest extends ImageMagickControllerTest
// Ignore the test in super class as the AIO transforms will not be selected . // Ignore the test in super class as the AIO transforms will not be selected .
// It is the mock that returns a zero length file for other transformers, when we supply an invalid targetExtension. // It is the mock that returns a zero length file for other transformers, when we supply an invalid targetExtension.
} }
@Test @Test
@Override @Override
public void testGetTransformConfigInfo() public void testGetTransformConfigInfo()
@@ -129,7 +129,7 @@ public class AIOControllerImageMagickTest extends ImageMagickControllerTest
// Ignore the test in super class as the way the AIO transformer provides config is fundamentally different. // Ignore the test in super class as the way the AIO transformer provides config is fundamentally different.
} }
@Test @Test
@Override @Override
public void testGetInfoFromConfigWithNoTransformOptions() public void testGetInfoFromConfigWithNoTransformOptions()
@@ -137,5 +137,5 @@ public class AIOControllerImageMagickTest extends ImageMagickControllerTest
// Ignore the test in super class as the way the AIO transformer provides config is fundamentally different. // Ignore the test in super class as the way the AIO transformer provides config is fundamentally different.
} }
} }

View File

@@ -48,7 +48,7 @@ import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilde
public class AIOControllerLibreOfficeTest extends LibreOfficeControllerTest public class AIOControllerLibreOfficeTest extends LibreOfficeControllerTest
{ {
//Tests contained in LibreOfficeControllerTest //Tests contained in LibreOfficeControllerTest
@Test @Test
public void testTestValidity() public void testTestValidity()
{ {
@@ -79,7 +79,7 @@ public class AIOControllerLibreOfficeTest extends LibreOfficeControllerTest
return builder; return builder;
} }
@Test @Test
@Override @Override
public void testGetTransformConfigInfo() public void testGetTransformConfigInfo()

View File

@@ -34,7 +34,7 @@ import org.springframework.context.annotation.Import;
@WebMvcTest(AIOController.class) @WebMvcTest(AIOController.class)
@Import(AIOCustomConfig.class) @Import(AIOCustomConfig.class)
public class AIOControllerMiscTest extends MiscControllerTest public class AIOControllerMiscTest extends MiscControllerTest
{ {
//Tests contained in MiscControllerTest //Tests contained in MiscControllerTest

View File

@@ -78,7 +78,7 @@ public class AIOControllerPdfRendererTest extends AlfrescoPdfRendererControllerT
// just test that we are actually testing against the AIOController (instead of MiscController) // just test that we are actually testing against the AIOController (instead of MiscController)
assertTrue(controller instanceof AIOController, "Wrong controller wired for test"); assertTrue(controller instanceof AIOController, "Wrong controller wired for test");
} }
@Test @Test
@Override @Override
public void testGetTransformConfigInfo() public void testGetTransformConfigInfo()
@@ -108,7 +108,7 @@ public class AIOControllerPdfRendererTest extends AlfrescoPdfRendererControllerT
// Ignore the test in super class as the way the AIO transformer provides config is fundamentally different. // Ignore the test in super class as the way the AIO transformer provides config is fundamentally different.
} }
@Test @Test
@Override @Override
public void testGetInfoFromConfigWithNoTransformOptions() public void testGetInfoFromConfigWithNoTransformOptions()

View File

@@ -44,7 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
@WebMvcTest(AIOController.class) @WebMvcTest(AIOController.class)
@Import(AIOCustomConfig.class) @Import(AIOCustomConfig.class)
public class AIOControllerTest //extends AbstractTransformerControllerTest public class AIOControllerTest //extends AbstractTransformerControllerTest
{ {
@Value("${transform.core.version}") @Value("${transform.core.version}")
private String coreVersion; private String coreVersion;

View File

@@ -309,7 +309,7 @@ public class AIOTransformRegistryTest
String roundTrip = clean(textWriter.toString()); String roundTrip = clean(textWriter.toString());
assertEquals( assertEquals(
checkText, roundTrip, checkText, roundTrip,
"Incorrect text in PDF when starting from text in " + encoding "Incorrect text in PDF when starting from text in " + encoding
); );

View File

@@ -85,7 +85,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
* Test the ImageMagickController without a server. * Test the ImageMagickController without a server.
* Super class includes tests for the AbstractTransformerController. * Super class includes tests for the AbstractTransformerController.
*/ */
// Specifying class for @WebMvcTest() will break AIO tests, without specifying it will use all controllers in the application context, // Specifying class for @WebMvcTest() will break AIO tests, without specifying it will use all controllers in the application context,
// currently only ImageMagickController.class // currently only ImageMagickController.class
@WebMvcTest() @WebMvcTest()
public class ImageMagickControllerTest extends AbstractTransformerControllerTest public class ImageMagickControllerTest extends AbstractTransformerControllerTest
@@ -173,7 +173,7 @@ public class ImageMagickControllerTest extends AbstractTransformerControllerTest
assertNotNull(actualSource); assertNotNull(actualSource);
assertNotNull(actualTarget); assertNotNull(actualTarget);
if (expectedSourceSuffix != null) { if (expectedSourceSuffix != null) {
assertTrue(actualSource.endsWith(expectedSourceSuffix), assertTrue(actualSource.endsWith(expectedSourceSuffix),
"The source file \"" + actualSource + "\" should have ended in \"" + expectedSourceSuffix + "\""); "The source file \"" + actualSource + "\" should have ended in \"" + expectedSourceSuffix + "\"");
actualSource = actualSource.substring(0, actualSource.length() - expectedSourceSuffix.length()); actualSource = actualSource.substring(0, actualSource.length() - expectedSourceSuffix.length());
} }
@@ -304,7 +304,7 @@ public class ImageMagickControllerTest extends AbstractTransformerControllerTest
.param("targetExtension", targetExtension) .param("targetExtension", targetExtension)
.param("targetMimetype", targetMimetype) .param("targetMimetype", targetMimetype)
.param("sourceMimetype", sourceMimetype) .param("sourceMimetype", sourceMimetype)
.param("startPage", "2") .param("startPage", "2")
.param("endPage", "3") .param("endPage", "3")

View File

@@ -164,38 +164,38 @@ public class ImageMagickTransformationIT {
.build(); .build();
private static final Map<String, TestFileInfo> TEST_FILES = Stream.of( private static final Map<String, TestFileInfo> TEST_FILES = Stream.of(
testFile(MIMETYPE_IMAGE_BMP, "bmp", "quick.bmp"), testFile(MIMETYPE_IMAGE_BMP, "bmp", "quick.bmp"),
testFile(MIMETYPE_APPLICATION_EPS, "eps", "quick.eps"), testFile(MIMETYPE_APPLICATION_EPS, "eps", "quick.eps"),
testFile(MIMETYPE_IMAGE_GIF, "gif", "quick.gif"), testFile(MIMETYPE_IMAGE_GIF, "gif", "quick.gif"),
testFile(MIMETYPE_IMAGE_JPEG, "jpg", "quick.jpg"), testFile(MIMETYPE_IMAGE_JPEG, "jpg", "quick.jpg"),
testFile(MIMETYPE_IMAGE_PBM, "pbm", "quick.pbm"), testFile(MIMETYPE_IMAGE_PBM, "pbm", "quick.pbm"),
testFile(MIMETYPE_IMAGE_PGM, "pgm", "quick.pgm"), testFile(MIMETYPE_IMAGE_PGM, "pgm", "quick.pgm"),
testFile(MIMETYPE_IMAGE_PNG, "png", "quick.png"), testFile(MIMETYPE_IMAGE_PNG, "png", "quick.png"),
testFile(MIMETYPE_IMAGE_PNM, "pnm", "quick.pnm"), testFile(MIMETYPE_IMAGE_PNM, "pnm", "quick.pnm"),
testFile(MIMETYPE_IMAGE_PPM, "ppm", "quick.ppm"), testFile(MIMETYPE_IMAGE_PPM, "ppm", "quick.ppm"),
testFile(MIMETYPE_IMAGE_XBM, "xbm", "quick.xbm"), testFile(MIMETYPE_IMAGE_XBM, "xbm", "quick.xbm"),
testFile(MIMETYPE_IMAGE_XPM, "xpm", "quick.xpm"), testFile(MIMETYPE_IMAGE_XPM, "xpm", "quick.xpm"),
testFile(MIMETYPE_IMAGE_PSD, "psd", "quick.psd"), testFile(MIMETYPE_IMAGE_PSD, "psd", "quick.psd"),
testFile(MIMETYPE_IMAGE_TIFF, "tiff", "quick.tiff"), testFile(MIMETYPE_IMAGE_TIFF, "tiff", "quick.tiff"),
testFile(MIMETYPE_IMAGE_XWD, "xwd", "quick.xwd") testFile(MIMETYPE_IMAGE_XWD, "xwd", "quick.xwd")
).collect(toMap(TestFileInfo::getPath, identity())); ).collect(toMap(TestFileInfo::getPath, identity()));
public static Stream<Pair<TestFileInfo, Pair<String,String>>> engineTransformations() { public static Stream<Pair<TestFileInfo, Pair<String,String>>> engineTransformations() {
return Stream return Stream
.of( .of(
allTargets("quick.bmp", targetExtensions), allTargets("quick.bmp", targetExtensions),
allTargets("quick.eps", targetExtensions), allTargets("quick.eps", targetExtensions),
allTargets("quick.gif", targetExtensions), allTargets("quick.gif", targetExtensions),
allTargets("quick.jpg", targetExtensions), allTargets("quick.jpg", targetExtensions),
allTargets("quick.pbm", targetExtensions), allTargets("quick.pbm", targetExtensions),
allTargets("quick.pgm", targetExtensions), allTargets("quick.pgm", targetExtensions),
allTargets("quick.png", targetExtensions), allTargets("quick.png", targetExtensions),
allTargets("quick.pnm", targetExtensions), allTargets("quick.pnm", targetExtensions),
allTargets("quick.ppm", targetExtensions), allTargets("quick.ppm", targetExtensions),
allTargets("quick.psd", targetExtensionsForPSD), allTargets("quick.psd", targetExtensionsForPSD),
allTargets("quick.tiff", targetExtensions), allTargets("quick.tiff", targetExtensions),
allTargets("quick.xbm", targetExtensions), allTargets("quick.xbm", targetExtensions),
allTargets("quick.xpm", targetExtensions), allTargets("quick.xpm", targetExtensions),
allTargets("quick.xwd", targetExtensions) allTargets("quick.xwd", targetExtensions)
).flatMap(identity()); ).flatMap(identity());
} }
@@ -208,7 +208,7 @@ public class ImageMagickTransformationIT {
String targetExtension = entry.getRight().getLeft(); String targetExtension = entry.getRight().getLeft();
String sourceMimetype = entry.getLeft().getMimeType(); String sourceMimetype = entry.getLeft().getMimeType();
String targetMimetype = entry.getRight().getRight(); String targetMimetype = entry.getRight().getRight();
final String descriptor = format("Transform ({0}, {1} -> {2}, {3})", final String descriptor = format("Transform ({0}, {1} -> {2}, {3})",
sourceFile, sourceMimetype, targetMimetype, targetExtension); sourceFile, sourceMimetype, targetMimetype, targetExtension);
try try
@@ -238,5 +238,5 @@ public class ImageMagickTransformationIT {
.map(k -> Pair.of(TEST_FILES.get(sourceFile), k)); .map(k -> Pair.of(TEST_FILES.get(sourceFile), k));
} }
} }

View File

@@ -22,9 +22,9 @@ yum -y install bzip2-devel freetype-devel libjpeg-devel libpng-devel libtiff-dev
zlib-devel perl-devel perl-generators ghostscript-devel djvulibre-devel libwmf-devel jasper-devel \ zlib-devel perl-devel perl-generators ghostscript-devel djvulibre-devel libwmf-devel jasper-devel \
libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms2-devel libxml2-devel librsvg2-devel \ libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms2-devel libxml2-devel librsvg2-devel \
fftw-devel ilmbase-devel OpenEXR-devel libwebp-devel jbigkit-devel openjpeg2-devel graphviz-devel \ fftw-devel ilmbase-devel OpenEXR-devel libwebp-devel jbigkit-devel openjpeg2-devel graphviz-devel \
libraqm-devel LibRaw-devel libraqm-devel LibRaw-devel
# Installing indirect dependencies # Installing indirect dependencies
# ImageMagick tests requite non default fonts # ImageMagick tests requite non default fonts
yum groupinstall -y "fonts" yum groupinstall -y "fonts"
# ImageMagick spec requires ldconfig_scriptlets macro # ImageMagick spec requires ldconfig_scriptlets macro
yum -y install epel-rpm-macros yum -y install epel-rpm-macros

View File

@@ -169,7 +169,7 @@ public class LibreOfficeControllerTest extends AbstractTransformerControllerTest
}).when(javaExecutor).convert(any(), any()); }).when(javaExecutor).convert(any(), any());
} }
protected void setJavaExecutor(AbstractTransformerController controller, LibreOfficeJavaExecutor javaExecutor) protected void setJavaExecutor(AbstractTransformerController controller, LibreOfficeJavaExecutor javaExecutor)
{ {
ReflectionTestUtils.setField(controller, "javaExecutor", javaExecutor); ReflectionTestUtils.setField(controller, "javaExecutor", javaExecutor);

View File

@@ -30,17 +30,17 @@
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \f31506\fs24 }{\*\defpap \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \f31506\fs24 }{\*\defpap
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0
\f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}} \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}
{\*\rsidtbl \rsid2693434\rsid4215609\rsid7808163\rsid16662808}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Cezar Leahu}{\operator Cezar Leahu} {\*\rsidtbl \rsid2693434\rsid4215609\rsid7808163\rsid16662808}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Cezar Leahu}{\operator Cezar Leahu}
{\creatim\yr2019\mo8\dy29\hr15\min41}{\revtim\yr2019\mo8\dy29\hr15\min43}{\version2}{\edmins2}{\nofpages1}{\nofwords17}{\nofchars102}{\nofcharsws118}{\vern2821}}{\*\userprops {\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Enabled}\proptype30 {\creatim\yr2019\mo8\dy29\hr15\min41}{\revtim\yr2019\mo8\dy29\hr15\min43}{\version2}{\edmins2}{\nofpages1}{\nofwords17}{\nofchars102}{\nofcharsws118}{\vern2821}}{\*\userprops {\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Enabled}\proptype30
{\staticval true}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SetDate}\proptype30{\staticval 2019-08-29T12:41:57+0200}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Method}\proptype30{\staticval Standard}{\propname MSIP_Label_ffb {\staticval true}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SetDate}\proptype30{\staticval 2019-08-29T12:41:57+0200}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Method}\proptype30{\staticval Standard}{\propname MSIP_Label_ffb
520d8-df98-444b-9f20-0dd9d08cf98c_Name}\proptype30{\staticval ffb520d8-df98-444b-9f20-0dd9d08cf98c}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SiteId}\proptype30{\staticval 65bc0b3b-7ca2-488c-ba9c-b1bebdd49af6}{\propname MSIP_Label_ffb520d8 520d8-df98-444b-9f20-0dd9d08cf98c_Name}\proptype30{\staticval ffb520d8-df98-444b-9f20-0dd9d08cf98c}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SiteId}\proptype30{\staticval 65bc0b3b-7ca2-488c-ba9c-b1bebdd49af6}{\propname MSIP_Label_ffb520d8
-df98-444b-9f20-0dd9d08cf98c_ActionId}\proptype30{\staticval 6097ae90-22f7-448a-b9b7-0000b0413133}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} -df98-444b-9f20-0dd9d08cf98c_ActionId}\proptype30{\staticval 6097ae90-22f7-448a-b9b7-0000b0413133}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw11900\paperh16840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect \paperw11900\paperh16840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1 \expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct \jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
@@ -48,25 +48,25 @@
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid2693434\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}} {\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid2693434\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} {\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9 {\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16662808 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16662808 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0
\f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid16662808 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid16662808
\par \par
\par \par
\par \par
\par \par
\par The quick brown fox jumps over the lazy dog \par The quick brown fox jumps over the lazy dog
\par \par
\par \par
\par \par
\par \par
\par \par
\par \par
\par \par
\par The quick brown fox jumps over the lazy dog \par The quick brown fox jumps over the lazy dog
\par \par
\par \par
\par \par
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6

View File

@@ -52,8 +52,8 @@ public class MiscMetadataExtractsIT extends AbstractMetadataExtractsIT
{ {
super.testTransformation(testFileInfo); super.testTransformation(testFileInfo);
} }
private static Stream<TestFileInfo> engineTransformations() private static Stream<TestFileInfo> engineTransformations()
{ {
return Stream.of( return Stream.of(
// HtmlMetadataExtractor // HtmlMetadataExtractor

View File

@@ -115,7 +115,7 @@ public class MiscTransformsIT
testFile(MIMETYPE_IWORK_PAGES, "pages", "quick.pages"), testFile(MIMETYPE_IWORK_PAGES, "pages", "quick.pages"),
testFile(MIMETYPE_RFC822, "eml", "quick.eml") testFile(MIMETYPE_RFC822, "eml", "quick.eml")
).collect(toMap(TestFileInfo::getMimeType, identity())); ).collect(toMap(TestFileInfo::getMimeType, identity()));
public static Stream<SourceTarget> engineTransformations() public static Stream<SourceTarget> engineTransformations()
{ {
return Stream.of( return Stream.of(

View File

@@ -1,14 +1,14 @@
The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy dog

View File

@@ -30,17 +30,17 @@
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \f31506\fs24 }{\*\defpap \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \f31506\fs24 }{\*\defpap
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0
\f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}} \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}
{\*\rsidtbl \rsid2693434\rsid4215609\rsid7808163\rsid16662808}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Cezar Leahu}{\operator Cezar Leahu} {\*\rsidtbl \rsid2693434\rsid4215609\rsid7808163\rsid16662808}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Cezar Leahu}{\operator Cezar Leahu}
{\creatim\yr2019\mo8\dy29\hr15\min41}{\revtim\yr2019\mo8\dy29\hr15\min43}{\version2}{\edmins2}{\nofpages1}{\nofwords17}{\nofchars102}{\nofcharsws118}{\vern2821}}{\*\userprops {\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Enabled}\proptype30 {\creatim\yr2019\mo8\dy29\hr15\min41}{\revtim\yr2019\mo8\dy29\hr15\min43}{\version2}{\edmins2}{\nofpages1}{\nofwords17}{\nofchars102}{\nofcharsws118}{\vern2821}}{\*\userprops {\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Enabled}\proptype30
{\staticval true}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SetDate}\proptype30{\staticval 2019-08-29T12:41:57+0200}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Method}\proptype30{\staticval Standard}{\propname MSIP_Label_ffb {\staticval true}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SetDate}\proptype30{\staticval 2019-08-29T12:41:57+0200}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Method}\proptype30{\staticval Standard}{\propname MSIP_Label_ffb
520d8-df98-444b-9f20-0dd9d08cf98c_Name}\proptype30{\staticval ffb520d8-df98-444b-9f20-0dd9d08cf98c}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SiteId}\proptype30{\staticval 65bc0b3b-7ca2-488c-ba9c-b1bebdd49af6}{\propname MSIP_Label_ffb520d8 520d8-df98-444b-9f20-0dd9d08cf98c_Name}\proptype30{\staticval ffb520d8-df98-444b-9f20-0dd9d08cf98c}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SiteId}\proptype30{\staticval 65bc0b3b-7ca2-488c-ba9c-b1bebdd49af6}{\propname MSIP_Label_ffb520d8
-df98-444b-9f20-0dd9d08cf98c_ActionId}\proptype30{\staticval 6097ae90-22f7-448a-b9b7-0000b0413133}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} -df98-444b-9f20-0dd9d08cf98c_ActionId}\proptype30{\staticval 6097ae90-22f7-448a-b9b7-0000b0413133}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw11900\paperh16840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect \paperw11900\paperh16840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1 \expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct \jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
@@ -48,25 +48,25 @@
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid2693434\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}} {\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid2693434\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} {\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9 {\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16662808 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16662808 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0
\f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid16662808 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid16662808
\par \par
\par \par
\par \par
\par \par
\par The quick brown fox jumps over the lazy dog \par The quick brown fox jumps over the lazy dog
\par \par
\par \par
\par \par
\par \par
\par \par
\par \par
\par \par
\par The quick brown fox jumps over the lazy dog \par The quick brown fox jumps over the lazy dog
\par \par
\par \par
\par \par
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6

View File

@@ -11,12 +11,12 @@
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr> <tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">page</div></td><td><input type="text" name="page" value="" /></td></tr> <tr><td><div style="text-align:right">page</div></td><td><input type="text" name="page" value="" /></td></tr>
<tr><td><div style="text-align:right">width</div></td><td><input type="text" name="width" value="" /></td></tr> <tr><td><div style="text-align:right">width</div></td><td><input type="text" name="width" value="" /></td></tr>
<tr><td><div style="text-align:right">height</div></td><td><input type="text" name="height" value="" /></td></tr> <tr><td><div style="text-align:right">height</div></td><td><input type="text" name="height" value="" /></td></tr>
<tr><td><div style="text-align:right">allowPdfEnlargement</div></td><td><input type="checkbox" name="allowPdfEnlargement" value="true" /></td></tr> <tr><td><div style="text-align:right">allowPdfEnlargement</div></td><td><input type="checkbox" name="allowPdfEnlargement" value="true" /></td></tr>
<tr><td><div style="text-align:right">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr> <tr><td><div style="text-align:right">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr> <tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table> </table>
</form> </form>

View File

@@ -56,7 +56,7 @@ public class AlfrescoPdfRendererTransformationIT
private static final Map<String, TestFileInfo> TEST_FILES = Stream.of( private static final Map<String, TestFileInfo> TEST_FILES = Stream.of(
testFile("application/pdf","pdf","quick.pdf"), testFile("application/pdf","pdf","quick.pdf"),
testFile("application/illustrator","ai","quickCS3.ai") , testFile("application/illustrator","ai","quickCS3.ai") ,
testFile("application/illustrator","ai","quickCS5.ai") testFile("application/illustrator","ai","quickCS5.ai")
).collect(toMap(TestFileInfo::getPath, identity())); ).collect(toMap(TestFileInfo::getPath, identity()));

View File

@@ -225,7 +225,7 @@ public class TikaControllerTest extends AbstractTransformerControllerTest
// Check the supplied source file has not been changed. // Check the supplied source file has not been changed.
byte[] actualSourceFileBytes = readAllBytes(new File(actualSource).toPath()); byte[] actualSourceFileBytes = readAllBytes(new File(actualSource).toPath());
assertArrayEquals(expectedSourceFileBytes, actualSourceFileBytes, assertArrayEquals(expectedSourceFileBytes, actualSourceFileBytes,
"Source file is not the same"); "Source file is not the same");
return mockExecutionResult; return mockExecutionResult;

View File

@@ -115,7 +115,7 @@ public class TikaMetadataExtractsIT extends AbstractMetadataExtractsIT
testFile(MIMETYPE_IMAGE_RAW_RW2, "rw2", "20140629_145035_Flower.RW2"), testFile(MIMETYPE_IMAGE_RAW_RW2, "rw2", "20140629_145035_Flower.RW2"),
testFile(MIMETYPE_IMAGE_RAW_NEF, "nef", "20150408_074941_Bush.NEF"), testFile(MIMETYPE_IMAGE_RAW_NEF, "nef", "20150408_074941_Bush.NEF"),
testFile(MIMETYPE_IMAGE_RAW_RAF, "raf", "20160502_190928_London_Underground.RAF"), testFile(MIMETYPE_IMAGE_RAW_RAF, "raf", "20160502_190928_London_Underground.RAF"),
// DWGMetadataExtractor // DWGMetadataExtractor
testFile(MIMETYPE_APP_DWG, "dwg", "quick2010CustomProps.dwg"), testFile(MIMETYPE_APP_DWG, "dwg", "quick2010CustomProps.dwg"),

View File

@@ -59,7 +59,7 @@ public class TikaTransformationIT
"xhtml", "application/xhtml+xml", "xhtml", "application/xhtml+xml",
"xml", "text/xml"); "xml", "text/xml");
@ParameterizedTest @ParameterizedTest
@MethodSource("engineTransformations") @MethodSource("engineTransformations")
@@ -78,7 +78,7 @@ public class TikaTransformationIT
{ {
targetMimetype = extensionMimetype.get(entry.getMiddle()); targetMimetype = extensionMimetype.get(entry.getMiddle());
} }
final String descriptor = format("Transform ({0}, {1} -> {2}, {3})", final String descriptor = format("Transform ({0}, {1} -> {2}, {3})",
sourceFile, sourceMimetype, targetMimetype, targetExtension); sourceFile, sourceMimetype, targetMimetype, targetExtension);
@@ -108,7 +108,7 @@ public class TikaTransformationIT
// TODO unit tests for the following file types (for which is difficult to find file samples): // TODO unit tests for the following file types (for which is difficult to find file samples):
// *.ogx (application/ogg) // *.ogx (application/ogg)
// *.cpio (application/x-cpio) // *.cpio (application/x-cpio)
// *.cdf (application/x-netcdf) // *.cdf (application/x-netcdf)
// *.hdf (application/x-hdf) // *.hdf (application/x-hdf)
public static Stream<Triple<String, String, String>> engineTransformations() public static Stream<Triple<String, String, String>> engineTransformations()
{ {

View File

@@ -1,23 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?><html xmlns="http://www.w3.org/1999/xhtml"> <?xml version="1.0" encoding="UTF-8"?><html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta name="X-Parsed-By" content="org.apache.tika.parser.DefaultParser"/> <meta name="X-Parsed-By" content="org.apache.tika.parser.DefaultParser"/>
<meta name="X-Parsed-By" content="org.apache.tika.parser.pkg.CompressorParser"/> <meta name="X-Parsed-By" content="org.apache.tika.parser.pkg.CompressorParser"/>
<meta name="Content-Type" content="application/gzip"/> <meta name="Content-Type" content="application/gzip"/>
<title/> <title/>
</head> </head>
<body> <body>
The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy dog
<div class="package-entry"> <div class="package-entry">
</div> </div>
</body> </body>
</html> </html>

View File

@@ -30,17 +30,17 @@
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \f31506\fs24 }{\*\defpap \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \f31506\fs24 }{\*\defpap
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0
\f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}} \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}
{\*\rsidtbl \rsid2693434\rsid4215609\rsid7808163\rsid16662808}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Cezar Leahu}{\operator Cezar Leahu} {\*\rsidtbl \rsid2693434\rsid4215609\rsid7808163\rsid16662808}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Cezar Leahu}{\operator Cezar Leahu}
{\creatim\yr2019\mo8\dy29\hr15\min41}{\revtim\yr2019\mo8\dy29\hr15\min43}{\version2}{\edmins2}{\nofpages1}{\nofwords17}{\nofchars102}{\nofcharsws118}{\vern2821}}{\*\userprops {\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Enabled}\proptype30 {\creatim\yr2019\mo8\dy29\hr15\min41}{\revtim\yr2019\mo8\dy29\hr15\min43}{\version2}{\edmins2}{\nofpages1}{\nofwords17}{\nofchars102}{\nofcharsws118}{\vern2821}}{\*\userprops {\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Enabled}\proptype30
{\staticval true}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SetDate}\proptype30{\staticval 2019-08-29T12:41:57+0200}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Method}\proptype30{\staticval Standard}{\propname MSIP_Label_ffb {\staticval true}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SetDate}\proptype30{\staticval 2019-08-29T12:41:57+0200}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_Method}\proptype30{\staticval Standard}{\propname MSIP_Label_ffb
520d8-df98-444b-9f20-0dd9d08cf98c_Name}\proptype30{\staticval ffb520d8-df98-444b-9f20-0dd9d08cf98c}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SiteId}\proptype30{\staticval 65bc0b3b-7ca2-488c-ba9c-b1bebdd49af6}{\propname MSIP_Label_ffb520d8 520d8-df98-444b-9f20-0dd9d08cf98c_Name}\proptype30{\staticval ffb520d8-df98-444b-9f20-0dd9d08cf98c}{\propname MSIP_Label_ffb520d8-df98-444b-9f20-0dd9d08cf98c_SiteId}\proptype30{\staticval 65bc0b3b-7ca2-488c-ba9c-b1bebdd49af6}{\propname MSIP_Label_ffb520d8
-df98-444b-9f20-0dd9d08cf98c_ActionId}\proptype30{\staticval 6097ae90-22f7-448a-b9b7-0000b0413133}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} -df98-444b-9f20-0dd9d08cf98c_ActionId}\proptype30{\staticval 6097ae90-22f7-448a-b9b7-0000b0413133}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw11900\paperh16840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect \paperw11900\paperh16840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1 \expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct \jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
@@ -48,25 +48,25 @@
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid2693434\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}} {\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid2693434\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} {\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9 {\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16662808 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16662808 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0
\f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid16662808 \f31506\fs24\lang1048\langfe1033\cgrid\langnp1048\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid16662808
\par \par
\par \par
\par \par
\par \par
\par The quick brown fox jumps over the lazy dog \par The quick brown fox jumps over the lazy dog
\par \par
\par \par
\par \par
\par \par
\par \par
\par \par
\par \par
\par The quick brown fox jumps over the lazy dog \par The quick brown fox jumps over the lazy dog
\par \par
\par \par
\par \par
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6

View File

@@ -62,10 +62,10 @@ import static org.alfresco.transformer.executors.Tika.TARGET_MIMETYPE;
public class TikaJavaExecutor implements JavaExecutor public class TikaJavaExecutor implements JavaExecutor
{ {
private boolean notExtractBookmarksTextDefault; private boolean notExtractBookmarksTextDefault;
private static final String ID = "tika"; private static final String ID = "tika";
public static final String LICENCE = public static final String LICENCE =
"This transformer uses Tika from Apache. See the license at http://www.apache.org/licenses/LICENSE-2.0. or in /Apache\\ 2.0.txt\n" + "This transformer uses Tika from Apache. See the license at http://www.apache.org/licenses/LICENSE-2.0. or in /Apache\\ 2.0.txt\n" +
"This transformer uses ExifTool by Phil Harvey. See license at https://exiftool.org/#license. or in /Perl-Artistic-License.txt"; "This transformer uses ExifTool by Phil Harvey. See license at https://exiftool.org/#license. or in /Perl-Artistic-License.txt";
@@ -101,7 +101,7 @@ public class TikaJavaExecutor implements JavaExecutor
} }
} }
public TikaJavaExecutor() public TikaJavaExecutor()
{ {
this(false); this(false);
} }

View File

@@ -44,35 +44,35 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor
{ {
private static final Logger logger = LoggerFactory.getLogger(IPTCMetadataExtractor.class); private static final Logger logger = LoggerFactory.getLogger(IPTCMetadataExtractor.class);
private static Set<String> IPTC_DATE_KEYS = Set.of("XMP-photoshop:DateCreated", "XMP-iptcExt:ArtworkDateCreated"); private static Set<String> IPTC_DATE_KEYS = Set.of("XMP-photoshop:DateCreated", "XMP-iptcExt:ArtworkDateCreated");
private static final Pattern YEAR_IPTC = Pattern.compile("(\\d{4}[:|-]\\d{2}[:|-]\\d{2})"); private static final Pattern YEAR_IPTC = Pattern.compile("(\\d{4}[:|-]\\d{2}[:|-]\\d{2})");
private ExifToolParser parser; private ExifToolParser parser;
public IPTCMetadataExtractor() public IPTCMetadataExtractor()
{ {
super(logger); super(logger);
} }
@Override @Override
protected Parser getParser() protected Parser getParser()
{ {
if (this.parser == null) { if (this.parser == null) {
this.parser = new ExifToolParser(); this.parser = new ExifToolParser();
} }
return this.parser; return this.parser;
} }
/** /**
* Because some of the mimetypes that IPTCMetadataExtractor now parse, were previously handled * Because some of the mimetypes that IPTCMetadataExtractor now parse, were previously handled
* by TikaAutoMetadataExtractor we call the TikaAutoMetadataExtractor.extractSpecific method to * by TikaAutoMetadataExtractor we call the TikaAutoMetadataExtractor.extractSpecific method to
* ensure that the returned properties contains the expected entries. * ensure that the returned properties contains the expected entries.
*/ */
@Override @Override
protected Map<String, Serializable> extractSpecific(Metadata metadata, Map<String, Serializable> properties, protected Map<String, Serializable> extractSpecific(Metadata metadata, Map<String, Serializable> properties,
Map<String, String> headers) Map<String, String> headers)
{ {
properties = new TikaAutoMetadataExtractor().extractSpecific(metadata, properties, headers); properties = new TikaAutoMetadataExtractor().extractSpecific(metadata, properties, headers);
ExifToolParser etParser = (ExifToolParser)this.getParser(); ExifToolParser etParser = (ExifToolParser)this.getParser();
@@ -109,7 +109,7 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor
/** /**
* Converts a date or date time strings into Iso8601 format <p> * Converts a date or date time strings into Iso8601 format <p>
* *
* @param dateStrings * @param dateStrings
* @return dateStrings in Iso8601 format * @return dateStrings in Iso8601 format
* @see #iptcToIso8601DateString * @see #iptcToIso8601DateString
@@ -139,7 +139,7 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor
* @param dateStr * @param dateStr
* @return dateStr in Iso8601 format * @return dateStr in Iso8601 format
*/ */
protected String iptcToIso8601DateString(String dateStr) protected String iptcToIso8601DateString(String dateStr)
{ {
char timeSeparator = 'T'; char timeSeparator = 'T';
Matcher yearMatcher = YEAR_IPTC.matcher(dateStr); Matcher yearMatcher = YEAR_IPTC.matcher(dateStr);
@@ -147,7 +147,7 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor
{ {
String year = yearMatcher.group(1); String year = yearMatcher.group(1);
dateStr = yearMatcher.replaceFirst(year.replaceAll(":", "-")); dateStr = yearMatcher.replaceFirst(year.replaceAll(":", "-"));
if (dateStr.length()>year.length() && dateStr.charAt(year.length())!=timeSeparator) if (dateStr.length()>year.length() && dateStr.charAt(year.length())!=timeSeparator)
{ {
dateStr = dateStr.replace(dateStr.charAt(year.length()), timeSeparator); dateStr = dateStr.replace(dateStr.charAt(year.length()), timeSeparator);
} }

View File

@@ -65,7 +65,7 @@ import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
public class ExifToolParser extends ExternalParser { public class ExifToolParser extends ExternalParser {
private static final Logger logger = LoggerFactory.getLogger(ExifToolParser.class); private static final Logger logger = LoggerFactory.getLogger(ExifToolParser.class);
private static final String EXIFTOOL_PARSER_CONFIG = "parsers/external/config/exiftool-parser.xml"; private static final String EXIFTOOL_PARSER_CONFIG = "parsers/external/config/exiftool-parser.xml";
@@ -138,7 +138,7 @@ public class ExifToolParser extends ExternalParser {
} }
/** /**
* Adapted from {@link org.apache.tika.parser.external.ExternalParser} * Adapted from {@link org.apache.tika.parser.external.ExternalParser}
* due to errors attempting to {@link #extractMetadata} from the errorStream in original implementation. <p> * due to errors attempting to {@link #extractMetadata} from the errorStream in original implementation. <p>
* Executes the configured external command and passes the given document * Executes the configured external command and passes the given document
* stream as a simple XHTML document to the given SAX content handler. * stream as a simple XHTML document to the given SAX content handler.
@@ -155,9 +155,9 @@ public class ExifToolParser extends ExternalParser {
TikaInputStream tis = TikaInputStream.get(stream, tmp); TikaInputStream tis = TikaInputStream.get(stream, tmp);
if (this.getSupportedTypes().contains(mediaType)) { if (this.getSupportedTypes().contains(mediaType)) {
parse(tis, xhtml, metadata, tmp); parse(tis, xhtml, metadata, tmp);
} }
switch (mediaType.getType()+"/"+mediaType.getSubtype()) { switch (mediaType.getType()+"/"+mediaType.getSubtype()) {
case MIMETYPE_IMAGE_JPEG: case MIMETYPE_IMAGE_JPEG:
parseAdditional(new JpegParser(), tis, handler, metadata, context, mediaType); parseAdditional(new JpegParser(), tis, handler, metadata, context, mediaType);
break; break;
case MIMETYPE_IMAGE_TIFF: case MIMETYPE_IMAGE_TIFF:

View File

@@ -138,4 +138,4 @@ XMP-plus\:PLUSVersion=plus:Version
XMP-plus\:PropertyReleaseID=plus:PropertyReleaseID XMP-plus\:PropertyReleaseID=plus:PropertyReleaseID
XMP-plus\:PropertyReleaseStatus=plus:PropertyReleaseStatus XMP-plus\:PropertyReleaseStatus=plus:PropertyReleaseStatus
stDim\:unit=stDim:unit stDim\:unit=stDim:unit

View File

@@ -529,23 +529,23 @@
{ {
"transformerName": "IPTCMetadataExtractor", "transformerName": "IPTCMetadataExtractor",
"supportedSourceAndTargetList": [ "supportedSourceAndTargetList": [
{"sourceMediaType": "image/gif", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/gif", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/jp2", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/jp2", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/jpeg", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/jpeg", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/png", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/png", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/tiff", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/tiff", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/webp", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/webp", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-adobe", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-adobe", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-canon", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-canon", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-fuji", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-fuji", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-hasselblad", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-hasselblad", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-kodak", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-kodak", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-minolta", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-minolta", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-nikon", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-nikon", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-olympus", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-olympus", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-panasonic", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-panasonic", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-pentax", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}, {"sourceMediaType": "image/x-raw-pentax", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
{"sourceMediaType": "image/x-raw-sony", "priority": 45, "targetMediaType": "alfresco-metadata-extract"} {"sourceMediaType": "image/x-raw-sony", "priority": 45, "targetMediaType": "alfresco-metadata-extract"}
], ],
"transformOptions": [ "transformOptions": [
"metadataOptions" "metadataOptions"

View File

@@ -81,7 +81,7 @@ public class TikaJavaExecutorTest {
// when default set to false, with no options passed we should get a call method without NOT_EXTRACT_BOOKMARKS_TEXT // when default set to false, with no options passed we should get a call method without NOT_EXTRACT_BOOKMARKS_TEXT
verify(executorSpyDefaultFalse, times(1)).call(mockSourceFile, mockTargetFile, transformName, null, null, verify(executorSpyDefaultFalse, times(1)).call(mockSourceFile, mockTargetFile, transformName, null, null,
TARGET_MIMETYPE + targetMimetype, TARGET_ENCODING + defaultEncoding); TARGET_MIMETYPE + targetMimetype, TARGET_ENCODING + defaultEncoding);
// use transforms with notExtractBookmarksText set to true // use transforms with notExtractBookmarksText set to true
clearInvocations(executorSpyDefaultTrue, executorSpyDefaultFalse); clearInvocations(executorSpyDefaultTrue, executorSpyDefaultFalse);
transformOptions.put("notExtractBookmarksText", "true"); transformOptions.put("notExtractBookmarksText", "true");

View File

@@ -33,10 +33,10 @@ import org.junit.jupiter.api.Test;
public class ExifToolParserTest { public class ExifToolParserTest {
ExifToolParser exifToolParser = new ExifToolParser(); ExifToolParser exifToolParser = new ExifToolParser();
@Test @Test
public void testFindSeparator() { public void testFindSeparator() {
String testCommand = "env FOO=${OUTPUT} exiftool -args -G1 " + ExifToolParser.SEPARATOR_SETTING String testCommand = "env FOO=${OUTPUT} exiftool -args -G1 " + ExifToolParser.SEPARATOR_SETTING
+ " \"|||\" ${INPUT}"; + " \"|||\" ${INPUT}";
String expected = "|||"; String expected = "|||";

View File

@@ -648,7 +648,7 @@ public class RuntimeExec
} }
logger.debug("Result: " + result.toString()); logger.debug("Result: " + result.toString());
// close output stream (connected to input stream of native subprocess) // close output stream (connected to input stream of native subprocess)
} }
/** /**

View File

@@ -86,7 +86,7 @@ import java.util.TreeMap;
* *
* The transform results in a new version of supplied source file that contains the metadata supplied in the transform * The transform results in a new version of supplied source file that contains the metadata supplied in the transform
* options. * options.
* *
* @author Jesper Steen Møller * @author Jesper Steen Møller
* @author Derek Hulley * @author Derek Hulley
* @author adavis * @author adavis

View File

@@ -50,24 +50,24 @@ import org.springframework.http.ResponseEntity;
* Super class of metadata integration tests. Sub classes should provide the following: * Super class of metadata integration tests. Sub classes should provide the following:
* <p> * <p>
* <ul> * <ul>
* <li>A method providing a * <li>A method providing a
* Stream of test files: {@code public static Stream<TestFileInfo> engineTransformations()}; </li> * Stream of test files: {@code public static Stream<TestFileInfo> engineTransformations()}; </li>
* <li> Provide expected json files (&lt;sourceFilename>"_metadata.json") as resources on the classpath.</li> * <li> Provide expected json files (&lt;sourceFilename>"_metadata.json") as resources on the classpath.</li>
* <li> Override the method {@code testTransformation(TestFileInfo testFileInfo)} such that it calls * <li> Override the method {@code testTransformation(TestFileInfo testFileInfo)} such that it calls
* the super method as a {@code @ParameterizedTest} for example:</li> </ul> * the super method as a {@code @ParameterizedTest} for example:</li> </ul>
* <pre> * <pre>
* &#64;ParameterizedTest * &#64;ParameterizedTest
* *
* &#64;MethodSource("engineTransformations") * &#64;MethodSource("engineTransformations")
* *
* &#64;Override * &#64;Override
* public void testTransformation(TestFileInfo testFileInfo) * public void testTransformation(TestFileInfo testFileInfo)
* *
* { * {
* super.testTransformation(TestFileInfo testFileInfo) * super.testTransformation(TestFileInfo testFileInfo)
* } * }
* </pre> * </pre>
* *
* @author adavis * @author adavis
* @author dedwards * @author dedwards
@@ -81,7 +81,7 @@ public abstract class AbstractMetadataExtractsIT
private final ObjectMapper jsonObjectMapper = new ObjectMapper(); private final ObjectMapper jsonObjectMapper = new ObjectMapper();
public void testTransformation(TestFileInfo testFileInfo) public void testTransformation(TestFileInfo testFileInfo)
{ {
final String sourceMimetype = testFileInfo.getMimeType(); final String sourceMimetype = testFileInfo.getMimeType();

View File

@@ -165,13 +165,13 @@ public abstract class AbstractTransformerControllerTest
if (testFile != null) if (testFile != null)
{ {
try (var inputStream = new FileInputStream(testFile); try (var inputStream = new FileInputStream(testFile);
var outputStream = new FileOutputStream(targetFile)) var outputStream = new FileOutputStream(targetFile))
{ {
FileChannel source = inputStream.getChannel(); FileChannel source = inputStream.getChannel();
FileChannel target = outputStream.getChannel(); FileChannel target = outputStream.getChannel();
target.transferFrom(source, 0, source.size()); target.transferFrom(source, 0, source.size());
} catch (Exception e) } catch (Exception e)
{ {
throw e; throw e;
} }
@@ -182,13 +182,13 @@ public abstract class AbstractTransformerControllerTest
if (testFile != null) if (testFile != null)
{ {
try (var inputStream = new FileInputStream(testFile); try (var inputStream = new FileInputStream(testFile);
var outputStream = new FileOutputStream(targetFile)) var outputStream = new FileOutputStream(targetFile))
{ {
FileChannel source = inputStream.getChannel(); FileChannel source = inputStream.getChannel();
FileChannel target = outputStream.getChannel(); FileChannel target = outputStream.getChannel();
target.transferFrom(source, 0, source.size()); target.transferFrom(source, 0, source.size());
} catch (Exception e) } catch (Exception e)
{ {
throw e; throw e;
} }

View File

@@ -28,7 +28,7 @@ import org.springframework.web.client.RestTemplate;
public class EngineClient public class EngineClient
{ {
private static final RestTemplate REST_TEMPLATE = new RestTemplate(); private static final RestTemplate REST_TEMPLATE = new RestTemplate();
public static ResponseEntity<Resource> sendTRequest( public static ResponseEntity<Resource> sendTRequest(
final String engineUrl, final String sourceFile, final String engineUrl, final String sourceFile,
final String sourceMimetype, final String targetMimetype, final String targetExtension) final String sourceMimetype, final String targetMimetype, final String targetExtension)

View File

@@ -1,12 +1,12 @@
# Transformer k8s liveness and readiness probes # Transformer k8s liveness and readiness probes
>**Note:** The transform-specific liveness probes are currently disabled by default in the >**Note:** The transform-specific liveness probes are currently disabled by default in the
Alfresco Docker Transformers **2.0.0-RC3** release. They can be enabled through the Alfresco Docker Transformers **2.0.0-RC3** release. They can be enabled through the
"**livenessTransformEnabled**" environment variable. "**livenessTransformEnabled**" environment variable.
> >
> The T-Engine liveness probes will be reevaluated/changed/improved as part of the ATS-138 story. > The T-Engine liveness probes will be reevaluated/changed/improved as part of the ATS-138 story.
> >
> Without the transform-specific liveness probees, calls to the "/live" endpoint of the > Without the transform-specific liveness probees, calls to the "/live" endpoint of the
T-Engines only check if the JVM is alive. T-Engines only check if the JVM is alive.
The transformer's liveness and readiness probes perform small test transformations to check that a pod has fully started up and that it is still healthy. The transformer's liveness and readiness probes perform small test transformations to check that a pod has fully started up and that it is still healthy.

View File

@@ -3,22 +3,22 @@ info:
description: | description: |
**Alfresco Transform Engines REST API** **Alfresco Transform Engines REST API**
Transform Request & Response API to allow a source file to be transformed into a Transform Request & Response API to allow a source file to be transformed into a
target file, given a set of transform options. target file, given a set of transform options.
The new JSON-based Transform Engines API is used by the Alfresco Transform Service (ATS). The new JSON-based Transform Engines API is used by the Alfresco Transform Service (ATS).
ATS provides an independently-scalable transform service, initially used by ACS ATS provides an independently-scalable transform service, initially used by ACS
Content Repository, as part of the overall Alfresco Digital Business Platform (DBP). Content Repository, as part of the overall Alfresco Digital Business Platform (DBP).
Note: Each kind of Transform Engine implements this Transform Engines API, including: Note: Each kind of Transform Engine implements this Transform Engines API, including:
* ImageMagick * ImageMagick
* LibreOffice * LibreOffice
* PDF Renderer * PDF Renderer
* Tika * Tika
In the future, this Transform Engines API may form the basis for adding custom Transform Engines. In the future, this Transform Engines API may form the basis for adding custom Transform Engines.
version: '1' version: '1'
title: Alfresco Transform Engines REST API title: Alfresco Transform Engines REST API
basePath: /alfresco/api/-default-/private/transformer/versions/1 basePath: /alfresco/api/-default-/private/transformer/versions/1
@@ -34,22 +34,22 @@ paths:
summary: Transform Engines API summary: Transform Engines API
description: | description: |
**Note:** available with Alfresco Transform Engines 2.0 and newer versions. **Note:** available with Alfresco Transform Engines 2.0 and newer versions.
This endpoint supports both JSON and Multipart. The JSON API is used within the This endpoint supports both JSON and Multipart. The JSON API is used within the
Alfresco Transform Service (eg. ACS 6.1). The Multipart API remains for backwards Alfresco Transform Service (eg. ACS 6.1). The Multipart API remains for backwards
compatibility (eg. ACS 6.0). compatibility (eg. ACS 6.0).
**Using JSON (application/json -> application/json)** **Using JSON (application/json -> application/json)**
The ACS Content Repository 6.1 (or higher) provides the option to offload The ACS Content Repository 6.1 (or higher) provides the option to offload
supported transformations to the Alfresco Transform Service. supported transformations to the Alfresco Transform Service.
The JSON API is used within the Alfresco Transform Service. It relies on the The JSON API is used within the Alfresco Transform Service. It relies on the
source and target files being stored and retrieved via the Alfresco Shared File source and target files being stored and retrieved via the Alfresco Shared File
Store (see also [alfresco-sfs.yaml](https://github.com/Alfresco/alfresco-shared-file-store/blob/master/docs/api-definitions/alfresco-sfs.yaml)). Store (see also [alfresco-sfs.yaml](https://github.com/Alfresco/alfresco-shared-file-store/blob/master/docs/api-definitions/alfresco-sfs.yaml)).
Here's a pseudo-example transform request: Here's a pseudo-example transform request:
```JSON ```JSON
{ {
"schema": 1, "schema": 1,
@@ -68,9 +68,9 @@ paths:
} }
} }
``` ```
Here's a pseudo-example response of a successful transform: Here's a pseudo-example response of a successful transform:
```JSON ```JSON
{ {
"schema": 1, "schema": 1,
@@ -81,9 +81,9 @@ paths:
"targetReference": "5bc81e48-e17a-4727-bd1c-3a279aa6b421" "targetReference": "5bc81e48-e17a-4727-bd1c-3a279aa6b421"
} }
``` ```
Here's a pseudo-example response of a failed transform: Here's a pseudo-example response of a failed transform:
```JSON ```JSON
{ {
"schema": 1, "schema": 1,
@@ -94,21 +94,21 @@ paths:
"sourceReference": "598387b8-d85d-4557-816e-50f44c969e04" "sourceReference": "598387b8-d85d-4557-816e-50f44c969e04"
} }
``` ```
**Using Multipart (multipart/form-data -> application/octet-stream)** **Using Multipart (multipart/form-data -> application/octet-stream)**
The Multipart API remains for backwards compatibility (eg. ACS 6.0). It requires The Multipart API remains for backwards compatibility (eg. ACS 6.0). It requires
the source file to be uploaded via multipart/form-data (along with transformation the source file to be uploaded via multipart/form-data (along with transformation
options). The target file is returned as a binary response (application/octet-steam). options). The target file is returned as a binary response (application/octet-steam).
operationId: transformOperation operationId: transformOperation
parameters: parameters:
- in: body - in: body
name: transformRequest name: transformRequest
description: The Transform Request including source reference and transform options description: The Transform Request including source reference and transform options
required: true required: true
schema: schema:
$ref: '#/definitions/transformRequest' $ref: '#/definitions/transformRequest'
consumes: consumes:
- application/json - application/json
- multipart/form-data - multipart/form-data
@@ -194,7 +194,7 @@ definitions:
transformRequestOptions: transformRequestOptions:
type: object type: object
additionalProperties: additionalProperties:
type: string type: string
transformReply: transformReply:
type: object type: object
properties: properties:

View File

@@ -12,7 +12,7 @@ The `.travis.yml` config file can be found in the root of the repository.
Travis CI builds differ by branch: Travis CI builds differ by branch:
* `master` / `SP/*` / `HF/*` branches: * `master` / `SP/*` / `HF/*` branches:
- regular builds which include the _Build_ stage; - regular builds which include the _Build_ stage;
> On the `master` branch only the _Build_ stage updates the `latest` T-Engines images on > On the `master` branch only the _Build_ stage updates the `latest` T-Engines images on
> both Quay and DockerHub: > both Quay and DockerHub:
> - alfresco/alfresco-pdf-renderer > - alfresco/alfresco-pdf-renderer
> - alfresco/alfresco-imagemagick > - alfresco/alfresco-imagemagick
@@ -20,9 +20,9 @@ Travis CI builds differ by branch:
> - alfresco/alfresco-libreoffice > - alfresco/alfresco-libreoffice
> - alfresco/alfresco-transform-misc > - alfresco/alfresco-transform-misc
> - alfresco/alfresco-transform-core-aio > - alfresco/alfresco-transform-core-aio
- if the commit message contains the `[trigger release]` tag, the builds will also - if the commit message contains the `[trigger release]` tag, the builds will also
include the _Release_ stage; include the _Release_ stage;
- PR builds where the latest commit contains the `[trigger release]` tag will execute dry runs - PR builds where the latest commit contains the `[trigger release]` tag will execute dry runs
of the release jobs (no artifacts will be published until the PR is actually merged). of the release jobs (no artifacts will be published until the PR is actually merged).
* `ATS-*` branches: * `ATS-*` branches:
- regular builds which include only the _Build_ and _Tests_ stages; - regular builds which include only the _Build_ and _Tests_ stages;
@@ -32,11 +32,11 @@ All other branches are ignored.
## Release process steps & info ## Release process steps & info
Prerequisites: Prerequisites:
- the `master` / `SP/*` / `HF/*` branch is green and it contains all the changes that should be - the `master` / `SP/*` / `HF/*` branch is green and it contains all the changes that should be
included in the next release. included in the next release.
Steps: Steps:
1. Create a new branch with the name `ATS-###_release_version` from the `master` / `SP/*`/ `HF/*` 1. Create a new branch with the name `ATS-###_release_version` from the `master` / `SP/*`/ `HF/*`
branch. branch.
2. Update the project version if the current POM version is not the next desired release; use a 2. Update the project version if the current POM version is not the next desired release; use a
maven command, i.e. maven command, i.e.
@@ -45,12 +45,12 @@ maven command, i.e.
``` ```
3. Update the project's dependencies (remove the `-SNAPSHOT` suffixes - only for dependencies, not 3. Update the project's dependencies (remove the `-SNAPSHOT` suffixes - only for dependencies, not
for the local project version). for the local project version).
4. Create a new commit with the `[trigger release]` tag in its message. If no local changes have 4. Create a new commit with the `[trigger release]` tag in its message. If no local changes have
been generated by steps (2) and (3), then an empty commit should be created - e.g. been generated by steps (2) and (3), then an empty commit should be created - e.g.
```bash ```bash
git commit --allow-empty -m "ATS-###: Release T-Core (T-Engines) #.##.# [trigger release]" git commit --allow-empty -m "ATS-###: Release T-Core (T-Engines) #.##.# [trigger release]"
``` ```
> The location of the `[trigger release]` tag in the commit message is irrelevant. > The location of the `[trigger release]` tag in the commit message is irrelevant.
> If for any reason your PR contains multiple commits, the commit with the `[trigger release]` > If for any reason your PR contains multiple commits, the commit with the `[trigger release]`
@@ -58,6 +58,6 @@ been generated by steps (2) and (3), then an empty commit should be created - e.
5. Open a new Pull Request from the `ATS-###_release_version` branch into the original 5. Open a new Pull Request from the `ATS-###_release_version` branch into the original
`master` / `SP/*` / `HF/*` branch and wait for a green build; the **Release** stage on the PR build `master` / `SP/*` / `HF/*` branch and wait for a green build; the **Release** stage on the PR build
will only execute a _Dry_Run_ of the release. will only execute a _Dry_Run_ of the release.
6. Once it is approved, merge the PR, preferably through the **Rebase and merge** option. If the 6. Once it is approved, merge the PR, preferably through the **Rebase and merge** option. If the
**Create a merge commit** (_Merge pull request_) or **Squash and merge** options are used, you **Create a merge commit** (_Merge pull request_) or **Squash and merge** options are used, you
need to ensure that the _commit message_ contains the `[trigger release]` tag (sub-string). need to ensure that the _commit message_ contains the `[trigger release]` tag (sub-string).

View File

@@ -1,7 +1,7 @@
## T-Engine configuration ## T-Engine configuration
T-Engines provide a */transform/config* end point for clients (e.g. Transform-Router or T-Engines provide a */transform/config* end point for clients (e.g. Transform-Router or
Alfresco-Repository) that indicate what is supported. T-Engines store this Alfresco-Repository) that indicate what is supported. T-Engines store this
configuration as a JSON resource file named *engine_config.json*. configuration as a JSON resource file named *engine_config.json*.
The config can be found under `alfresco-transform-core\<t-engine-name>\src\main\resources The config can be found under `alfresco-transform-core\<t-engine-name>\src\main\resources
@@ -65,9 +65,9 @@ The config can be found under `alfresco-transform-core\<t-engine-name>\src\main\
and **pdfboxOptions** which has a group of options **targetEncoding** and and **pdfboxOptions** which has a group of options **targetEncoding** and
**notExtractBookmarksText**. Unless an option has a **"required": true** field it is **notExtractBookmarksText**. Unless an option has a **"required": true** field it is
considered to be optional. You don't need to specify *sourceMimetype*, considered to be optional. You don't need to specify *sourceMimetype*,
*targetMimetype*, *sourceExtension* or *targetExtension* as options as *targetMimetype*, *sourceExtension* or *targetExtension* as options as
these are automatically added. these are automatically added.
*Snippet from ImageMagick T-engine configuration:* *Snippet from ImageMagick T-engine configuration:*
```json ```json
"transformOptions": { "transformOptions": {
@@ -85,32 +85,32 @@ The config can be found under `alfresco-transform-core\<t-engine-name>\src\main\
}, },
``` ```
* There are two types of transformOptions, *transformOptionsValue* and *transformOptionsGroup*: * There are two types of transformOptions, *transformOptionsValue* and *transformOptionsGroup*:
* _TransformOptionsValue_ is used to represent a single transformation option, it is defined * _TransformOptionsValue_ is used to represent a single transformation option, it is defined
by a **name** and an optional **required** field. by a **name** and an optional **required** field.
* _TransformOptionGroup_ represents a group of one or more options, it is used to group * _TransformOptionGroup_ represents a group of one or more options, it is used to group
options that define a options that define a
characteristic. In the above snippet all the options for crop are defined under a group, it is recommended to characteristic. In the above snippet all the options for crop are defined under a group, it is recommended to
use this approach as it is easier to read. A transformOptionsGroup can contain one or more transformOptionsValue use this approach as it is easier to read. A transformOptionsGroup can contain one or more transformOptionsValue
and transformOptionsGroup. and transformOptionsGroup.
**Limitations**: **Limitations**:
* For a transformOptions to be referenced in a different T-engine, another transformer * For a transformOptions to be referenced in a different T-engine, another transformer
with the complete definition of the transformOptions needs to return the config to the client. with the complete definition of the transformOptions needs to return the config to the client.
* In a transformOptions definition it is not allowed to use a reference to another tranformOption. * In a transformOptions definition it is not allowed to use a reference to another tranformOption.
### Transformers ### Transformers
* **transformers** - A list of transformer definitions. * **transformers** - A list of transformer definitions.
Each transformer definition should have a unique **transformerName**, Each transformer definition should have a unique **transformerName**,
specify a **supportedSourceAndTargetList** and indicate which specify a **supportedSourceAndTargetList** and indicate which
options it supports. As it is shown in the Tika snippet, an *engine_config* options it supports. As it is shown in the Tika snippet, an *engine_config*
can describe one or more transformers, as a T-engine can have can describe one or more transformers, as a T-engine can have
multiple transformers (e.g. Tika, Misc). A transformer configuration may multiple transformers (e.g. Tika, Misc). A transformer configuration may
specify references to 0 or more transformOptions. specify references to 0 or more transformOptions.
### Supported Source and Target List ### Supported Source and Target List
* **supportedSourceAndTargetList** is simply a list of source and target * **supportedSourceAndTargetList** is simply a list of source and target
Media Types that may be transformed, optionally specifying a Media Types that may be transformed, optionally specifying a
**maxSourceSizeBytes** and a **priority** value. **maxSourceSizeBytes** and a **priority** value.
* *maxSourceSizeBytes* is used to set the upper size limit of a transformation. * *maxSourceSizeBytes* is used to set the upper size limit of a transformation.
* If not specified, the default value for maxSourceSizeBytes is **unlimited**. * If not specified, the default value for maxSourceSizeBytes is **unlimited**.
* *priority* it is used by clients to determine which transfomer to call or by T-engines * *priority* it is used by clients to determine which transfomer to call or by T-engines
@@ -121,7 +121,7 @@ The config can be found under `alfresco-transform-core\<t-engine-name>\src\main\
* If not specified, the default value for priority is **50**. * If not specified, the default value for priority is **50**.
* Note: priority values are like the order in a queue, the **lower** the number the **higher the * Note: priority values are like the order in a queue, the **lower** the number the **higher the
priority** is. priority** is.
## Transformer selection strategy ## Transformer selection strategy
The ACS repository will use the T-Engine configuration to choose which T-Engine will perform a transform. The ACS repository will use the T-Engine configuration to choose which T-Engine will perform a transform.
A transformer definition contains a supported list of source and target Media Types. This is used for the A transformer definition contains a supported list of source and target Media Types. This is used for the
@@ -132,7 +132,7 @@ Order for selection is:
2. transformOptions 2. transformOptions
3. maxSourceSizeBytes 3. maxSourceSizeBytes
4. priority 4. priority
#### Case 1: #### Case 1:
``` ```
Transformer 1 defines options: Op1, Op2 Transformer 1 defines options: Op1, Op2
@@ -165,4 +165,4 @@ Rendition provides values for options: Op1, Op2
``` ```
If we assume both transformers support the required source and target Media Types and If we assume both transformers support the required source and target Media Types and
*priority1* < *priority2*, Transformer 1 will be selected because its priority is higher. *priority1* < *priority2*, Transformer 1 will be selected because its priority is higher.

View File

@@ -1,21 +1,21 @@
## Additional Alfresco Models (Content Metadata) ## Additional Alfresco Models (Content Metadata)
IPTC (Photo Metadata) Standard ( https://iptc.org/standards/photo-metadata/iptc-standard/ ) IPTC (Photo Metadata) Standard ( https://iptc.org/standards/photo-metadata/iptc-standard/ )
Alfresco provides an IPTC content model that maps the IPTC photo metadata fields to an
Alfresco Content Model.
This IPTC content model used to be part of the Alfresco Media Management product. It is now Alfresco provides an IPTC content model that maps the IPTC photo metadata fields to an
provided as part of the core open-source Alfresco Repository. Hence, it will be pre-configured Alfresco Content Model.
as part of future core Repository releases (eg. ACS 7.1.0 and related Alfresco Community release).
This IPTC content model used to be part of the Alfresco Media Management product. It is now
provided as part of the core open-source Alfresco Repository. Hence, it will be pre-configured
as part of future core Repository releases (eg. ACS 7.1.0 and related Alfresco Community release).
The latest ("master") source files can also be found here: The latest ("master") source files can also be found here:
- https://github.com/Alfresco/alfresco-community-repo/blob/master/repository/src/main/resources/alfresco/model/iptcModel.xml - https://github.com/Alfresco/alfresco-community-repo/blob/master/repository/src/main/resources/alfresco/model/iptcModel.xml
- https://github.com/Alfresco/alfresco-community-repo/tree/master/repository/src/main/resources/alfresco/messages (iptc-model*.properties) - https://github.com/Alfresco/alfresco-community-repo/tree/master/repository/src/main/resources/alfresco/messages (iptc-model*.properties)
In the meantime, for convenience, a copy of the Alfresco IPTC content model (XML + message properties) In the meantime, for convenience, a copy of the Alfresco IPTC content model (XML + message properties)
is also provided here. These files can be configured to deploy the model into earlier versions of is also provided here. These files can be configured to deploy the model into earlier versions of
ACS (eg. 7.0.0) using static bootstrap mechanism. ACS (eg. 7.0.0) using static bootstrap mechanism.

View File

@@ -209,7 +209,7 @@
<tokenised>false</tokenised> <tokenised>false</tokenised>
</index> </index>
</property> </property>
<!-- Deprecated by IPTC <!-- Deprecated by IPTC
<property name="photoshop:Urgency"> <property name="photoshop:Urgency">
<type>d:text</type> <type>d:text</type>
@@ -266,7 +266,7 @@
<tokenised>false</tokenised> <tokenised>false</tokenised>
</index> </index>
</property> </property>
<!-- Deprecated by IPTC <!-- Deprecated by IPTC
<property name="Iptc4xmpExt:DigitalSourcefileType"> <property name="Iptc4xmpExt:DigitalSourcefileType">
<type>d:text</type> <type>d:text</type>
</property> </property>
@@ -615,7 +615,7 @@
</properties> </properties>
</aspect> </aspect>
</aspects> </aspects>
</model> </model>