mirror of
https://github.com/Alfresco/alfresco-transform-core.git
synced 2025-08-14 17:58:27 +00:00
fix trailing-whitespace
This commit is contained in:
@@ -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)
|
||||
* `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)
|
||||
|
||||
|
||||
### Documentation
|
||||
|
||||
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
|
||||
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:
|
||||
* [alfresco/alfresco-transform-core-aio](https://hub.docker.com/r/alfresco/alfresco-transform-core-aio)
|
||||
|
@@ -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
|
||||
@Override
|
||||
public ProbeTestTransform getProbeTestTransform()
|
||||
public ProbeTestTransform getProbeTestTransform()
|
||||
{
|
||||
// HtmlParserContentTransformer html -> text
|
||||
// See the Javadoc on this method and Probes.md for the choice of these values.
|
||||
|
@@ -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">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">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">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr>
|
||||
|
||||
|
||||
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
|
@@ -34,13 +34,13 @@ public class AIOControllerHttpRequestTest extends AbstractHttpRequestTest
|
||||
{
|
||||
|
||||
@Override
|
||||
protected String getTransformerName()
|
||||
protected String getTransformerName()
|
||||
{
|
||||
return "All in One Transformer";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getSourceExtension()
|
||||
protected String getSourceExtension()
|
||||
{
|
||||
// Currently using same extension as ImageMagick tests
|
||||
return "jpg";
|
||||
|
@@ -56,7 +56,7 @@ public class AIOControllerImageMagickTest extends ImageMagickControllerTest
|
||||
|
||||
@BeforeEach @Override
|
||||
public void before() throws IOException
|
||||
{
|
||||
{
|
||||
ReflectionTestUtils.setField(commandExecutor, "transformCommand", mockTransformCommand);
|
||||
ReflectionTestUtils.setField(commandExecutor, "checkCommand", mockCheckCommand);
|
||||
//Need to wire in the mocked commandExecutor into the controller...
|
||||
@@ -67,7 +67,7 @@ public class AIOControllerImageMagickTest extends ImageMagickControllerTest
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractTransformerController getController()
|
||||
protected AbstractTransformerController getController()
|
||||
{
|
||||
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 .
|
||||
// It is the mock that returns a zero length file for other transformers, when we supply an invalid targetExtension.
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Override
|
||||
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.
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Override
|
||||
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.
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -48,7 +48,7 @@ import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilde
|
||||
public class AIOControllerLibreOfficeTest extends LibreOfficeControllerTest
|
||||
{
|
||||
//Tests contained in LibreOfficeControllerTest
|
||||
|
||||
|
||||
@Test
|
||||
public void testTestValidity()
|
||||
{
|
||||
@@ -79,7 +79,7 @@ public class AIOControllerLibreOfficeTest extends LibreOfficeControllerTest
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Override
|
||||
public void testGetTransformConfigInfo()
|
||||
|
@@ -34,7 +34,7 @@ import org.springframework.context.annotation.Import;
|
||||
|
||||
@WebMvcTest(AIOController.class)
|
||||
@Import(AIOCustomConfig.class)
|
||||
public class AIOControllerMiscTest extends MiscControllerTest
|
||||
public class AIOControllerMiscTest extends MiscControllerTest
|
||||
{
|
||||
//Tests contained in MiscControllerTest
|
||||
|
||||
|
@@ -78,7 +78,7 @@ public class AIOControllerPdfRendererTest extends AlfrescoPdfRendererControllerT
|
||||
// just test that we are actually testing against the AIOController (instead of MiscController)
|
||||
assertTrue(controller instanceof AIOController, "Wrong controller wired for test");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Override
|
||||
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.
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Override
|
||||
public void testGetInfoFromConfigWithNoTransformOptions()
|
||||
|
@@ -44,7 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
@WebMvcTest(AIOController.class)
|
||||
@Import(AIOCustomConfig.class)
|
||||
public class AIOControllerTest //extends AbstractTransformerControllerTest
|
||||
public class AIOControllerTest //extends AbstractTransformerControllerTest
|
||||
{
|
||||
@Value("${transform.core.version}")
|
||||
private String coreVersion;
|
||||
|
@@ -309,7 +309,7 @@ public class AIOTransformRegistryTest
|
||||
String roundTrip = clean(textWriter.toString());
|
||||
|
||||
assertEquals(
|
||||
checkText, roundTrip,
|
||||
checkText, roundTrip,
|
||||
"Incorrect text in PDF when starting from text in " + encoding
|
||||
);
|
||||
|
||||
|
@@ -85,7 +85,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
* Test the ImageMagickController without a server.
|
||||
* 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
|
||||
@WebMvcTest()
|
||||
public class ImageMagickControllerTest extends AbstractTransformerControllerTest
|
||||
@@ -173,7 +173,7 @@ public class ImageMagickControllerTest extends AbstractTransformerControllerTest
|
||||
assertNotNull(actualSource);
|
||||
assertNotNull(actualTarget);
|
||||
if (expectedSourceSuffix != null) {
|
||||
assertTrue(actualSource.endsWith(expectedSourceSuffix),
|
||||
assertTrue(actualSource.endsWith(expectedSourceSuffix),
|
||||
"The source file \"" + actualSource + "\" should have ended in \"" + expectedSourceSuffix + "\"");
|
||||
actualSource = actualSource.substring(0, actualSource.length() - expectedSourceSuffix.length());
|
||||
}
|
||||
@@ -304,7 +304,7 @@ public class ImageMagickControllerTest extends AbstractTransformerControllerTest
|
||||
.param("targetExtension", targetExtension)
|
||||
.param("targetMimetype", targetMimetype)
|
||||
.param("sourceMimetype", sourceMimetype)
|
||||
|
||||
|
||||
.param("startPage", "2")
|
||||
.param("endPage", "3")
|
||||
|
||||
|
@@ -164,38 +164,38 @@ public class ImageMagickTransformationIT {
|
||||
.build();
|
||||
|
||||
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_IMAGE_GIF, "gif", "quick.gif"),
|
||||
testFile(MIMETYPE_IMAGE_GIF, "gif", "quick.gif"),
|
||||
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_PNG, "png", "quick.png"),
|
||||
testFile(MIMETYPE_IMAGE_PNG, "png", "quick.png"),
|
||||
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_XPM, "xpm", "quick.xpm"),
|
||||
testFile(MIMETYPE_IMAGE_XPM, "xpm", "quick.xpm"),
|
||||
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")
|
||||
).collect(toMap(TestFileInfo::getPath, identity()));
|
||||
|
||||
public static Stream<Pair<TestFileInfo, Pair<String,String>>> engineTransformations() {
|
||||
return Stream
|
||||
.of(
|
||||
allTargets("quick.bmp", targetExtensions),
|
||||
allTargets("quick.bmp", targetExtensions),
|
||||
allTargets("quick.eps", targetExtensions),
|
||||
allTargets("quick.gif", targetExtensions),
|
||||
allTargets("quick.gif", targetExtensions),
|
||||
allTargets("quick.jpg", targetExtensions),
|
||||
allTargets("quick.pbm", targetExtensions),
|
||||
allTargets("quick.pbm", targetExtensions),
|
||||
allTargets("quick.pgm", targetExtensions),
|
||||
allTargets("quick.png", targetExtensions),
|
||||
allTargets("quick.png", targetExtensions),
|
||||
allTargets("quick.pnm", targetExtensions),
|
||||
allTargets("quick.ppm", targetExtensions),
|
||||
allTargets("quick.ppm", targetExtensions),
|
||||
allTargets("quick.psd", targetExtensionsForPSD),
|
||||
allTargets("quick.tiff", targetExtensions),
|
||||
allTargets("quick.tiff", targetExtensions),
|
||||
allTargets("quick.xbm", targetExtensions),
|
||||
allTargets("quick.xpm", targetExtensions),
|
||||
allTargets("quick.xpm", targetExtensions),
|
||||
allTargets("quick.xwd", targetExtensions)
|
||||
).flatMap(identity());
|
||||
}
|
||||
@@ -208,7 +208,7 @@ public class ImageMagickTransformationIT {
|
||||
String targetExtension = entry.getRight().getLeft();
|
||||
String sourceMimetype = entry.getLeft().getMimeType();
|
||||
String targetMimetype = entry.getRight().getRight();
|
||||
|
||||
|
||||
final String descriptor = format("Transform ({0}, {1} -> {2}, {3})",
|
||||
sourceFile, sourceMimetype, targetMimetype, targetExtension);
|
||||
try
|
||||
@@ -238,5 +238,5 @@ public class ImageMagickTransformationIT {
|
||||
.map(k -> Pair.of(TEST_FILES.get(sourceFile), k));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@@ -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 \
|
||||
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 \
|
||||
libraqm-devel LibRaw-devel
|
||||
libraqm-devel LibRaw-devel
|
||||
# Installing indirect dependencies
|
||||
# ImageMagick tests requite non default fonts
|
||||
# ImageMagick tests requite non default fonts
|
||||
yum groupinstall -y "fonts"
|
||||
# ImageMagick spec requires ldconfig_scriptlets macro
|
||||
yum -y install epel-rpm-macros
|
||||
|
@@ -169,7 +169,7 @@ public class LibreOfficeControllerTest extends AbstractTransformerControllerTest
|
||||
}).when(javaExecutor).convert(any(), any());
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected void setJavaExecutor(AbstractTransformerController controller, LibreOfficeJavaExecutor javaExecutor)
|
||||
{
|
||||
ReflectionTestUtils.setField(controller, "javaExecutor", javaExecutor);
|
||||
|
@@ -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\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;
|
||||
\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
|
||||
\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
|
||||
\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;}}
|
||||
{\*\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
|
||||
{\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
|
||||
-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
|
||||
\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
|
||||
@@ -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 .}}
|
||||
{\*\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
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987
|
||||
\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 }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
|
||||
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
|
||||
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
|
||||
|
@@ -52,8 +52,8 @@ public class MiscMetadataExtractsIT extends AbstractMetadataExtractsIT
|
||||
{
|
||||
super.testTransformation(testFileInfo);
|
||||
}
|
||||
|
||||
private static Stream<TestFileInfo> engineTransformations()
|
||||
|
||||
private static Stream<TestFileInfo> engineTransformations()
|
||||
{
|
||||
return Stream.of(
|
||||
// HtmlMetadataExtractor
|
||||
|
@@ -115,7 +115,7 @@ public class MiscTransformsIT
|
||||
testFile(MIMETYPE_IWORK_PAGES, "pages", "quick.pages"),
|
||||
testFile(MIMETYPE_RFC822, "eml", "quick.eml")
|
||||
).collect(toMap(TestFileInfo::getMimeType, identity()));
|
||||
|
||||
|
||||
public static Stream<SourceTarget> engineTransformations()
|
||||
{
|
||||
return Stream.of(
|
||||
|
Binary file not shown.
@@ -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
|
||||
|
@@ -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\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;
|
||||
\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
|
||||
\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
|
||||
\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;}}
|
||||
{\*\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
|
||||
{\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
|
||||
-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
|
||||
\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
|
||||
@@ -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 .}}
|
||||
{\*\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
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987
|
||||
\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 }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
|
||||
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
|
||||
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
|
||||
|
@@ -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">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">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">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr>
|
||||
|
||||
|
||||
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
|
@@ -56,7 +56,7 @@ public class AlfrescoPdfRendererTransformationIT
|
||||
|
||||
private static final Map<String, TestFileInfo> TEST_FILES = Stream.of(
|
||||
testFile("application/pdf","pdf","quick.pdf"),
|
||||
testFile("application/illustrator","ai","quickCS3.ai") ,
|
||||
testFile("application/illustrator","ai","quickCS3.ai") ,
|
||||
testFile("application/illustrator","ai","quickCS5.ai")
|
||||
).collect(toMap(TestFileInfo::getPath, identity()));
|
||||
|
||||
|
@@ -225,7 +225,7 @@ public class TikaControllerTest extends AbstractTransformerControllerTest
|
||||
|
||||
// Check the supplied source file has not been changed.
|
||||
byte[] actualSourceFileBytes = readAllBytes(new File(actualSource).toPath());
|
||||
assertArrayEquals(expectedSourceFileBytes, actualSourceFileBytes,
|
||||
assertArrayEquals(expectedSourceFileBytes, actualSourceFileBytes,
|
||||
"Source file is not the same");
|
||||
|
||||
return mockExecutionResult;
|
||||
|
@@ -115,7 +115,7 @@ public class TikaMetadataExtractsIT extends AbstractMetadataExtractsIT
|
||||
testFile(MIMETYPE_IMAGE_RAW_RW2, "rw2", "20140629_145035_Flower.RW2"),
|
||||
testFile(MIMETYPE_IMAGE_RAW_NEF, "nef", "20150408_074941_Bush.NEF"),
|
||||
testFile(MIMETYPE_IMAGE_RAW_RAF, "raf", "20160502_190928_London_Underground.RAF"),
|
||||
|
||||
|
||||
// DWGMetadataExtractor
|
||||
testFile(MIMETYPE_APP_DWG, "dwg", "quick2010CustomProps.dwg"),
|
||||
|
||||
|
@@ -59,7 +59,7 @@ public class TikaTransformationIT
|
||||
"xhtml", "application/xhtml+xml",
|
||||
"xml", "text/xml");
|
||||
|
||||
|
||||
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("engineTransformations")
|
||||
@@ -78,7 +78,7 @@ public class TikaTransformationIT
|
||||
{
|
||||
targetMimetype = extensionMimetype.get(entry.getMiddle());
|
||||
}
|
||||
|
||||
|
||||
|
||||
final String descriptor = format("Transform ({0}, {1} -> {2}, {3})",
|
||||
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):
|
||||
// *.ogx (application/ogg)
|
||||
// *.cpio (application/x-cpio)
|
||||
// *.cdf (application/x-netcdf)
|
||||
// *.cdf (application/x-netcdf)
|
||||
// *.hdf (application/x-hdf)
|
||||
public static Stream<Triple<String, String, String>> engineTransformations()
|
||||
{
|
||||
|
Binary file not shown.
@@ -1,23 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
|
||||
<head>
|
||||
|
||||
|
||||
<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="Content-Type" content="application/gzip"/>
|
||||
|
||||
|
||||
<title/>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
The quick brown fox jumps over the lazy dog
|
||||
|
||||
<div class="package-entry">
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -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\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;
|
||||
\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
|
||||
\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
|
||||
\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;}}
|
||||
{\*\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
|
||||
{\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
|
||||
-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
|
||||
\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
|
||||
@@ -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 .}}
|
||||
{\*\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
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\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
|
||||
\par
|
||||
\par
|
||||
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4996987
|
||||
\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 }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
|
||||
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
|
||||
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
|
||||
|
@@ -62,10 +62,10 @@ import static org.alfresco.transformer.executors.Tika.TARGET_MIMETYPE;
|
||||
public class TikaJavaExecutor implements JavaExecutor
|
||||
{
|
||||
private boolean notExtractBookmarksTextDefault;
|
||||
|
||||
|
||||
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 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);
|
||||
}
|
||||
|
@@ -44,35 +44,35 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor
|
||||
{
|
||||
|
||||
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 final Pattern YEAR_IPTC = Pattern.compile("(\\d{4}[:|-]\\d{2}[:|-]\\d{2})");
|
||||
|
||||
private ExifToolParser parser;
|
||||
|
||||
public IPTCMetadataExtractor()
|
||||
public IPTCMetadataExtractor()
|
||||
{
|
||||
super(logger);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Parser getParser()
|
||||
protected Parser getParser()
|
||||
{
|
||||
if (this.parser == null) {
|
||||
this.parser = new ExifToolParser();
|
||||
}
|
||||
return this.parser;
|
||||
return this.parser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Because some of the mimetypes that IPTCMetadataExtractor now parse, were previously handled
|
||||
* by TikaAutoMetadataExtractor we call the TikaAutoMetadataExtractor.extractSpecific method to
|
||||
* Because some of the mimetypes that IPTCMetadataExtractor now parse, were previously handled
|
||||
* by TikaAutoMetadataExtractor we call the TikaAutoMetadataExtractor.extractSpecific method to
|
||||
* ensure that the returned properties contains the expected entries.
|
||||
*/
|
||||
@Override
|
||||
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);
|
||||
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>
|
||||
*
|
||||
*
|
||||
* @param dateStrings
|
||||
* @return dateStrings in Iso8601 format
|
||||
* @see #iptcToIso8601DateString
|
||||
@@ -139,7 +139,7 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor
|
||||
* @param dateStr
|
||||
* @return dateStr in Iso8601 format
|
||||
*/
|
||||
protected String iptcToIso8601DateString(String dateStr)
|
||||
protected String iptcToIso8601DateString(String dateStr)
|
||||
{
|
||||
char timeSeparator = 'T';
|
||||
Matcher yearMatcher = YEAR_IPTC.matcher(dateStr);
|
||||
@@ -147,7 +147,7 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor
|
||||
{
|
||||
String year = yearMatcher.group(1);
|
||||
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);
|
||||
}
|
||||
|
@@ -65,7 +65,7 @@ import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class ExifToolParser extends ExternalParser {
|
||||
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ExifToolParser.class);
|
||||
|
||||
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>
|
||||
* Executes the configured external command and passes the given document
|
||||
* 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);
|
||||
if (this.getSupportedTypes().contains(mediaType)) {
|
||||
parse(tis, xhtml, metadata, tmp);
|
||||
}
|
||||
}
|
||||
switch (mediaType.getType()+"/"+mediaType.getSubtype()) {
|
||||
case MIMETYPE_IMAGE_JPEG:
|
||||
case MIMETYPE_IMAGE_JPEG:
|
||||
parseAdditional(new JpegParser(), tis, handler, metadata, context, mediaType);
|
||||
break;
|
||||
case MIMETYPE_IMAGE_TIFF:
|
||||
|
@@ -138,4 +138,4 @@ XMP-plus\:PLUSVersion=plus:Version
|
||||
XMP-plus\:PropertyReleaseID=plus:PropertyReleaseID
|
||||
XMP-plus\:PropertyReleaseStatus=plus:PropertyReleaseStatus
|
||||
|
||||
stDim\:unit=stDim:unit
|
||||
stDim\:unit=stDim:unit
|
||||
|
@@ -529,23 +529,23 @@
|
||||
{
|
||||
"transformerName": "IPTCMetadataExtractor",
|
||||
"supportedSourceAndTargetList": [
|
||||
{"sourceMediaType": "image/gif", "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/png", "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/x-raw-adobe", "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-hasselblad", "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-nikon", "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-pentax", "priority": 45, "targetMediaType": "alfresco-metadata-extract"},
|
||||
{"sourceMediaType": "image/x-raw-sony", "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/jpeg", "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/webp", "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-fuji", "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-minolta", "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-panasonic", "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"}
|
||||
],
|
||||
"transformOptions": [
|
||||
"metadataOptions"
|
||||
|
@@ -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
|
||||
verify(executorSpyDefaultFalse, times(1)).call(mockSourceFile, mockTargetFile, transformName, null, null,
|
||||
TARGET_MIMETYPE + targetMimetype, TARGET_ENCODING + defaultEncoding);
|
||||
|
||||
|
||||
// use transforms with notExtractBookmarksText set to true
|
||||
clearInvocations(executorSpyDefaultTrue, executorSpyDefaultFalse);
|
||||
transformOptions.put("notExtractBookmarksText", "true");
|
||||
|
@@ -33,10 +33,10 @@ import org.junit.jupiter.api.Test;
|
||||
public class ExifToolParserTest {
|
||||
|
||||
ExifToolParser exifToolParser = new ExifToolParser();
|
||||
|
||||
|
||||
@Test
|
||||
public void testFindSeparator() {
|
||||
|
||||
|
||||
String testCommand = "env FOO=${OUTPUT} exiftool -args -G1 " + ExifToolParser.SEPARATOR_SETTING
|
||||
+ " \"|||\" ${INPUT}";
|
||||
String expected = "|||";
|
||||
|
@@ -648,7 +648,7 @@ public class RuntimeExec
|
||||
}
|
||||
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)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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
|
||||
* options.
|
||||
*
|
||||
*
|
||||
* @author Jesper Steen Møller
|
||||
* @author Derek Hulley
|
||||
* @author adavis
|
||||
|
@@ -50,24 +50,24 @@ import org.springframework.http.ResponseEntity;
|
||||
* Super class of metadata integration tests. Sub classes should provide the following:
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>A method providing a
|
||||
* <li>A method providing a
|
||||
* Stream of test files: {@code public static Stream<TestFileInfo> engineTransformations()}; </li>
|
||||
* <li> Provide expected json files (<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>
|
||||
* <pre>
|
||||
* @ParameterizedTest
|
||||
*
|
||||
*
|
||||
* @MethodSource("engineTransformations")
|
||||
*
|
||||
*
|
||||
* @Override
|
||||
|
||||
* public void testTransformation(TestFileInfo testFileInfo)
|
||||
*
|
||||
* {
|
||||
*
|
||||
* {
|
||||
* super.testTransformation(TestFileInfo testFileInfo)
|
||||
* }
|
||||
* </pre>
|
||||
* </pre>
|
||||
*
|
||||
* @author adavis
|
||||
* @author dedwards
|
||||
@@ -81,7 +81,7 @@ public abstract class AbstractMetadataExtractsIT
|
||||
|
||||
private final ObjectMapper jsonObjectMapper = new ObjectMapper();
|
||||
|
||||
|
||||
|
||||
public void testTransformation(TestFileInfo testFileInfo)
|
||||
{
|
||||
final String sourceMimetype = testFileInfo.getMimeType();
|
||||
|
@@ -165,13 +165,13 @@ public abstract class AbstractTransformerControllerTest
|
||||
if (testFile != null)
|
||||
{
|
||||
try (var inputStream = new FileInputStream(testFile);
|
||||
var outputStream = new FileOutputStream(targetFile))
|
||||
var outputStream = new FileOutputStream(targetFile))
|
||||
{
|
||||
FileChannel source = inputStream.getChannel();
|
||||
FileChannel target = outputStream.getChannel();
|
||||
target.transferFrom(source, 0, source.size());
|
||||
|
||||
} catch (Exception e)
|
||||
} catch (Exception e)
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
@@ -182,13 +182,13 @@ public abstract class AbstractTransformerControllerTest
|
||||
if (testFile != null)
|
||||
{
|
||||
try (var inputStream = new FileInputStream(testFile);
|
||||
var outputStream = new FileOutputStream(targetFile))
|
||||
var outputStream = new FileOutputStream(targetFile))
|
||||
{
|
||||
FileChannel source = inputStream.getChannel();
|
||||
FileChannel target = outputStream.getChannel();
|
||||
target.transferFrom(source, 0, source.size());
|
||||
|
||||
} catch (Exception e)
|
||||
} catch (Exception e)
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
|
@@ -28,7 +28,7 @@ import org.springframework.web.client.RestTemplate;
|
||||
public class EngineClient
|
||||
{
|
||||
private static final RestTemplate REST_TEMPLATE = new RestTemplate();
|
||||
|
||||
|
||||
public static ResponseEntity<Resource> sendTRequest(
|
||||
final String engineUrl, final String sourceFile,
|
||||
final String sourceMimetype, final String targetMimetype, final String targetExtension)
|
||||
|
@@ -1,12 +1,12 @@
|
||||
# Transformer k8s liveness and readiness probes
|
||||
|
||||
>**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
|
||||
>**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
|
||||
"**livenessTransformEnabled**" environment variable.
|
||||
>
|
||||
> 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.
|
||||
|
||||
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.
|
||||
|
@@ -3,22 +3,22 @@ info:
|
||||
description: |
|
||||
**Alfresco Transform Engines REST API**
|
||||
|
||||
Transform Request & Response API to allow a source file to be transformed into a
|
||||
target file, given a set of transform options.
|
||||
|
||||
Transform Request & Response API to allow a source file to be transformed into a
|
||||
target file, given a set of transform options.
|
||||
|
||||
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).
|
||||
|
||||
|
||||
Note: Each kind of Transform Engine implements this Transform Engines API, including:
|
||||
|
||||
|
||||
* ImageMagick
|
||||
* LibreOffice
|
||||
* PDF Renderer
|
||||
* Tika
|
||||
|
||||
|
||||
In the future, this Transform Engines API may form the basis for adding custom Transform Engines.
|
||||
|
||||
|
||||
version: '1'
|
||||
title: Alfresco Transform Engines REST API
|
||||
basePath: /alfresco/api/-default-/private/transformer/versions/1
|
||||
@@ -34,22 +34,22 @@ paths:
|
||||
summary: Transform Engines API
|
||||
description: |
|
||||
**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
|
||||
Alfresco Transform Service (eg. ACS 6.1). The Multipart API remains for backwards
|
||||
|
||||
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
|
||||
compatibility (eg. ACS 6.0).
|
||||
|
||||
|
||||
**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.
|
||||
|
||||
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
|
||||
Store (see also [alfresco-sfs.yaml](https://github.com/Alfresco/alfresco-shared-file-store/blob/master/docs/api-definitions/alfresco-sfs.yaml)).
|
||||
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
|
||||
```JSON
|
||||
{
|
||||
"schema": 1,
|
||||
@@ -68,9 +68,9 @@ paths:
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Here's a pseudo-example response of a successful transform:
|
||||
|
||||
|
||||
```JSON
|
||||
{
|
||||
"schema": 1,
|
||||
@@ -81,9 +81,9 @@ paths:
|
||||
"targetReference": "5bc81e48-e17a-4727-bd1c-3a279aa6b421"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Here's a pseudo-example response of a failed transform:
|
||||
|
||||
|
||||
```JSON
|
||||
{
|
||||
"schema": 1,
|
||||
@@ -94,21 +94,21 @@ paths:
|
||||
"sourceReference": "598387b8-d85d-4557-816e-50f44c969e04"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
**Using Multipart (multipart/form-data -> application/octet-stream)**
|
||||
|
||||
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 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
|
||||
options). The target file is returned as a binary response (application/octet-steam).
|
||||
|
||||
|
||||
operationId: transformOperation
|
||||
parameters:
|
||||
- in: body
|
||||
name: transformRequest
|
||||
description: The Transform Request including source reference and transform options
|
||||
description: The Transform Request including source reference and transform options
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/transformRequest'
|
||||
$ref: '#/definitions/transformRequest'
|
||||
consumes:
|
||||
- application/json
|
||||
- multipart/form-data
|
||||
@@ -194,7 +194,7 @@ definitions:
|
||||
transformRequestOptions:
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: string
|
||||
transformReply:
|
||||
type: object
|
||||
properties:
|
||||
|
@@ -12,7 +12,7 @@ The `.travis.yml` config file can be found in the root of the repository.
|
||||
Travis CI builds differ by branch:
|
||||
* `master` / `SP/*` / `HF/*` branches:
|
||||
- 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:
|
||||
> - alfresco/alfresco-pdf-renderer
|
||||
> - alfresco/alfresco-imagemagick
|
||||
@@ -20,9 +20,9 @@ Travis CI builds differ by branch:
|
||||
> - alfresco/alfresco-libreoffice
|
||||
> - alfresco/alfresco-transform-misc
|
||||
> - 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;
|
||||
- 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).
|
||||
* `ATS-*` branches:
|
||||
- regular builds which include only the _Build_ and _Tests_ stages;
|
||||
@@ -32,11 +32,11 @@ All other branches are ignored.
|
||||
|
||||
## Release process steps & info
|
||||
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.
|
||||
|
||||
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.
|
||||
2. Update the project version if the current POM version is not the next desired release; use a
|
||||
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
|
||||
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.
|
||||
```bash
|
||||
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.
|
||||
|
||||
> 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
|
||||
`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.
|
||||
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
|
||||
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
|
||||
need to ensure that the _commit message_ contains the `[trigger release]` tag (sub-string).
|
||||
|
@@ -1,7 +1,7 @@
|
||||
## T-Engine configuration
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -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
|
||||
**notExtractBookmarksText**. Unless an option has a **"required": true** field it is
|
||||
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.
|
||||
|
||||
|
||||
*Snippet from ImageMagick T-engine configuration:*
|
||||
```json
|
||||
"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*:
|
||||
* _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.
|
||||
* _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
|
||||
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
|
||||
and transformOptionsGroup.
|
||||
|
||||
use this approach as it is easier to read. A transformOptionsGroup can contain one or more transformOptionsValue
|
||||
and transformOptionsGroup.
|
||||
|
||||
**Limitations**:
|
||||
* 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.
|
||||
* In a transformOptions definition it is not allowed to use a reference to another tranformOption.
|
||||
|
||||
|
||||
### Transformers
|
||||
* **transformers** - A list of transformer definitions.
|
||||
Each transformer definition should have a unique **transformerName**,
|
||||
specify a **supportedSourceAndTargetList** and indicate which
|
||||
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
|
||||
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.
|
||||
|
||||
### Supported Source and Target List
|
||||
* **supportedSourceAndTargetList** is simply a list of source and target
|
||||
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.
|
||||
* 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
|
||||
@@ -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**.
|
||||
* Note: priority values are like the order in a queue, the **lower** the number the **higher the
|
||||
priority** is.
|
||||
|
||||
|
||||
## Transformer selection strategy
|
||||
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
|
||||
@@ -132,7 +132,7 @@ Order for selection is:
|
||||
2. transformOptions
|
||||
3. maxSourceSizeBytes
|
||||
4. priority
|
||||
|
||||
|
||||
#### Case 1:
|
||||
```
|
||||
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
|
||||
*priority1* < *priority2*, Transformer 1 will be selected because its priority is higher.
|
||||
|
||||
|
||||
|
@@ -1,21 +1,21 @@
|
||||
## Additional Alfresco Models (Content Metadata)
|
||||
|
||||
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
|
||||
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).
|
||||
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
|
||||
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:
|
||||
|
||||
- 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)
|
||||
|
||||
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
|
||||
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
|
||||
ACS (eg. 7.0.0) using static bootstrap mechanism.
|
||||
|
||||
|
||||
|
||||
|
@@ -209,7 +209,7 @@
|
||||
<tokenised>false</tokenised>
|
||||
</index>
|
||||
</property>
|
||||
|
||||
|
||||
<!-- Deprecated by IPTC
|
||||
<property name="photoshop:Urgency">
|
||||
<type>d:text</type>
|
||||
@@ -266,7 +266,7 @@
|
||||
<tokenised>false</tokenised>
|
||||
</index>
|
||||
</property>
|
||||
<!-- Deprecated by IPTC
|
||||
<!-- Deprecated by IPTC
|
||||
<property name="Iptc4xmpExt:DigitalSourcefileType">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
@@ -615,7 +615,7 @@
|
||||
|
||||
</properties>
|
||||
</aspect>
|
||||
|
||||
|
||||
</aspects>
|
||||
|
||||
</model>
|
||||
|
Reference in New Issue
Block a user