@@ -31,6 +31,7 @@ This file is part of the iText (R) project.
31
31
import com .itextpdf .kernel .xmp .XMPMetaFactory ;
32
32
import com .itextpdf .kernel .xmp .XMPUtils ;
33
33
import com .itextpdf .kernel .xmp .options .SerializeOptions ;
34
+ import com .itextpdf .test .AssertUtil ;
34
35
import com .itextpdf .test .ExtendedITextTest ;
35
36
import com .itextpdf .test .TestUtil ;
36
37
import com .itextpdf .test .annotations .LogMessage ;
@@ -62,7 +63,7 @@ public static void beforeClass() {
62
63
public static void afterClass () {
63
64
CompareTool .cleanup (DESTINATION_FOLDER );
64
65
}
65
-
66
+
66
67
@ Test
67
68
public void createEmptyDocumentWithXmp () throws Exception {
68
69
String filename = "emptyDocumentWithXmp.pdf" ;
@@ -259,4 +260,163 @@ private byte[] removeAlwaysDifferentEntries(byte[] cmpBytes) throws XMPException
259
260
cmpBytes = XMPMetaFactory .serializeToBuffer (xmpMeta , new SerializeOptions (SerializeOptions .SORT ));
260
261
return cmpBytes ;
261
262
}
263
+
264
+ @ Test
265
+ public void bagParsingTest () {
266
+ String xmp = "<x:xmpmeta xmlns:x=\" adobe:ns:meta/\" x:xmptk=\" Adobe XMP Core 6.0-c006 79.dabacbb, "
267
+ + "2021/04/14-00:39:44 \" >\n "
268
+ + " <rdf:RDF xmlns:rdf=\" http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >\n "
269
+ + " <rdf:Description rdf:about=\" \" \n "
270
+ + " xmlns:photoshop=\" http://ns.adobe.com/photoshop/1.0/\" \n "
271
+ + " xmlns:xmpMM=\" http://ns.adobe.com/xap/1.0/mm/\" \n "
272
+ + " xmlns:stEvt=\" http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\" \n "
273
+ + " xmlns:stRef=\" http://ns.adobe.com/xap/1.0/sType/ResourceRef#\" \n "
274
+ + " xmlns:xmp=\" http://ns.adobe.com/xap/1.0/\" \n "
275
+ + " xmlns:xmpGImg=\" http://ns.adobe.com/xap/1.0/g/img/\" \n "
276
+ + " xmlns:dc=\" http://purl.org/dc/elements/1.1/\" \n "
277
+ + " xmlns:pdf=\" http://ns.adobe.com/pdf/1.3/\" >\n "
278
+ + " <photoshop:LegacyIPTCDigest>CDCFFA7DA8C7BE09057076AEAF05C34E</photoshop:LegacyIPTCDigest>\n "
279
+ + " <photoshop:ColorMode>3</photoshop:ColorMode>\n "
280
+ + " <photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>\n "
281
+ + " <photoshop:DocumentAncestors>\n "
282
+ + " <rdf:Bag>\n "
283
+ + " <rdf:li>78274CCED3154607AD19599D29855E30</rdf:li>\n "
284
+ + " <rdf:li>A61D41481CEE4032AE7A116AD6C942DC</rdf:li>\n "
285
+ + " <rdf:li>A2A26CD02B014819824FC4314B4152FF</rdf:li>\n "
286
+ + " <rdf:li>425FC234DCE84124A5EEAF17C69CCC62</rdf:li>\n "
287
+ + " <rdf:li>D2B4867567A547EA9F87B476EB21147E</rdf:li>\n "
288
+ + " <rdf:li>CE995EEDAD734D029F9B27AD04BA7052</rdf:li>\n "
289
+ + " <rdf:li>E754B36AD97E49EAABC7E8F7CEA30696</rdf:li>\n "
290
+ + " <rdf:li>713B782250904422BDDCAD1723C25C3C</rdf:li>\n "
291
+ + " <rdf:li>DC818BB5F9F1421C87DA05C97DEEB2CF</rdf:li>\n "
292
+ + " \n "
293
+ + " <rdf:li>D2B4867567A547EA9F87B476EB21147E</rdf:li>\n "
294
+ + " <rdf:li>CE995EEDAD734D029F9B27AD04BA7052</rdf:li>\n "
295
+ + " <rdf:li>E754B36AD97E49EAABC7E8F7CEA30696</rdf:li>\n "
296
+ + " <rdf:li>713B782250904422BDDCAD1723C25C3C</rdf:li>\n "
297
+ + " <rdf:li>DC818BB5F9F1421C87DA05C97DEEB2CF</rdf:li>\n "
298
+ + " </rdf:Bag>\n "
299
+ + " </photoshop:DocumentAncestors> \n "
300
+ + " </rdf:Description>\n "
301
+ + " </rdf:RDF>\n "
302
+ + "</x:xmpmeta>" ;
303
+
304
+ AssertUtil .doesNotThrow (
305
+ () -> XMPMetaFactory .parseFromBuffer (xmp .getBytes (StandardCharsets .UTF_8 )));
306
+ }
307
+
308
+
309
+ @ Test
310
+ public void altParsingTest () {
311
+ String xmp = "<x:xmpmeta xmlns:x=\" adobe:ns:meta/\" x:xmptk=\" Adobe XMP Core 6.0-c006 79.dabacbb, "
312
+ + "2021/04/14-00:39:44 \" >\n "
313
+ + " <rdf:RDF xmlns:rdf=\" http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >\n "
314
+ + " <rdf:Description rdf:about=\" \" \n "
315
+ + " xmlns:photoshop=\" http://ns.adobe.com/photoshop/1.0/\" \n "
316
+ + " xmlns:xmpMM=\" http://ns.adobe.com/xap/1.0/mm/\" \n "
317
+ + " xmlns:stEvt=\" http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\" \n "
318
+ + " xmlns:stRef=\" http://ns.adobe.com/xap/1.0/sType/ResourceRef#\" \n "
319
+ + " xmlns:xmp=\" http://ns.adobe.com/xap/1.0/\" \n "
320
+ + " xmlns:xmpGImg=\" http://ns.adobe.com/xap/1.0/g/img/\" \n "
321
+ + " xmlns:dc=\" http://purl.org/dc/elements/1.1/\" \n "
322
+ + " xmlns:pdf=\" http://ns.adobe.com/pdf/1.3/\" >\n "
323
+ + " <photoshop:LegacyIPTCDigest>CDCFFA7DA8C7BE09057076AEAF05C34E</photoshop:LegacyIPTCDigest>\n "
324
+ + " <photoshop:ColorMode>3</photoshop:ColorMode>\n "
325
+ + " <photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>\n "
326
+ + " <photoshop:DocumentAncestors>\n "
327
+ + " <rdf:Alt>\n "
328
+ + " <rdf:li>0006528E7FAD8C1170BB8605BDABA5EC</rdf:li>\n "
329
+ + " <rdf:li>00072919E3FCD9243A279B11FA36E751</rdf:li>\n "
330
+ + " <rdf:li>D2B4867567A547EA9F87B476EB21147E</rdf:li>\n "
331
+ + " <rdf:li>CE995EEDAD734D029F9B27AD04BA7052</rdf:li>\n "
332
+ + " <rdf:li>E754B36AD97E49EAABC7E8F7CEA30696</rdf:li>\n "
333
+ + " <rdf:li>713B782250904422BDDCAD1723C25C3C</rdf:li>\n "
334
+ + " <rdf:li>DC818BB5F9F1421C87DA05C97DEEB2CF</rdf:li>\n "
335
+ + " \n "
336
+ + " <rdf:li>D2B4867567A547EA9F87B476EB21147E</rdf:li>\n "
337
+ + " <rdf:li>CE995EEDAD734D029F9B27AD04BA7052</rdf:li>\n "
338
+ + " <rdf:li>E754B36AD97E49EAABC7E8F7CEA30696</rdf:li>\n "
339
+ + " <rdf:li>713B782250904422BDDCAD1723C25C3C</rdf:li>\n "
340
+ + " <rdf:li>DC818BB5F9F1421C87DA05C97DEEB2CF</rdf:li>\n "
341
+ + " </rdf:Alt>\n "
342
+ + " </photoshop:DocumentAncestors> \n "
343
+ + " </rdf:Description>\n "
344
+ + " </rdf:RDF>\n "
345
+ + "</x:xmpmeta>" ;
346
+
347
+ AssertUtil .doesNotThrow (
348
+ () -> XMPMetaFactory .parseFromBuffer (xmp .getBytes (StandardCharsets .UTF_8 )));
349
+ }
350
+
351
+
352
+ @ Test
353
+ public void seqParsingTest () {
354
+ String xmp = "<x:xmpmeta xmlns:x=\" adobe:ns:meta/\" x:xmptk=\" Adobe XMP Core 6.0-c006 79.dabacbb, "
355
+ + "2021/04/14-00:39:44 \" >\n "
356
+ + " <rdf:RDF xmlns:rdf=\" http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >\n "
357
+ + " <rdf:Description rdf:about=\" \" \n "
358
+ + " xmlns:photoshop=\" http://ns.adobe.com/photoshop/1.0/\" \n "
359
+ + " xmlns:xmpMM=\" http://ns.adobe.com/xap/1.0/mm/\" \n "
360
+ + " xmlns:stEvt=\" http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\" \n "
361
+ + " xmlns:stRef=\" http://ns.adobe.com/xap/1.0/sType/ResourceRef#\" \n "
362
+ + " xmlns:xmp=\" http://ns.adobe.com/xap/1.0/\" \n "
363
+ + " xmlns:xmpGImg=\" http://ns.adobe.com/xap/1.0/g/img/\" \n "
364
+ + " xmlns:dc=\" http://purl.org/dc/elements/1.1/\" \n "
365
+ + " xmlns:pdf=\" http://ns.adobe.com/pdf/1.3/\" >\n "
366
+ + " <photoshop:LegacyIPTCDigest>CDCFFA7DA8C7BE09057076AEAF05C34E</photoshop:LegacyIPTCDigest>\n "
367
+ + " <photoshop:ColorMode>3</photoshop:ColorMode>\n "
368
+ + " <photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>\n "
369
+ + " <photoshop:DocumentAncestors>\n "
370
+ + " <rdf:Seq>\n "
371
+ + " <rdf:li>78274CCED3154607AD19599D29855E30</rdf:li>\n "
372
+ + " <rdf:li>A61D41481CEE4032AE7A116AD6C942DC</rdf:li>\n "
373
+ + " <rdf:li>A2A26CD02B014819824FC4314B4152FF</rdf:li>\n "
374
+ + " <rdf:li>425FC234DCE84124A5EEAF17C69CCC62</rdf:li>\n "
375
+ + " <rdf:li>D2B4867567A547EA9F87B476EB21147E</rdf:li>\n "
376
+ + " <rdf:li>CE995EEDAD734D029F9B27AD04BA7052</rdf:li>\n "
377
+ + " <rdf:li>E754B36AD97E49EAABC7E8F7CEA30696</rdf:li>\n "
378
+ + " <rdf:li>713B782250904422BDDCAD1723C25C3C</rdf:li>\n "
379
+ + " <rdf:li>DC818BB5F9F1421C87DA05C97DEEB2CF</rdf:li>\n "
380
+ + " \n "
381
+ + " <rdf:li>D2B4867567A547EA9F87B476EB21147E</rdf:li>\n "
382
+ + " <rdf:li>CE995EEDAD734D029F9B27AD04BA7052</rdf:li>\n "
383
+ + " <rdf:li>E754B36AD97E49EAABC7E8F7CEA30696</rdf:li>\n "
384
+ + " <rdf:li>713B782250904422BDDCAD1723C25C3C</rdf:li>\n "
385
+ + " <rdf:li>DC818BB5F9F1421C87DA05C97DEEB2CF</rdf:li>\n "
386
+ + " </rdf:Seq>\n "
387
+ + " </photoshop:DocumentAncestors> \n "
388
+ + " </rdf:Description>\n "
389
+ + " </rdf:RDF>\n "
390
+ + "</x:xmpmeta>" ;
391
+
392
+ AssertUtil .doesNotThrow (
393
+ () -> XMPMetaFactory .parseFromBuffer (xmp .getBytes (StandardCharsets .UTF_8 )));
394
+ }
395
+
396
+
397
+ @ Test
398
+ public void listParsingTest () {
399
+ String xmp = "<x:xmpmeta xmlns:x=\" adobe:ns:meta/\" x:xmptk=\" Adobe XMP Core 6.0-c006 79.dabacbb, "
400
+ + "2021/04/14-00:39:44 \" >\n "
401
+ + " <rdf:RDF xmlns:rdf=\" http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >\n "
402
+ + " <rdf:Description rdf:about=\" \" \n "
403
+ + " xmlns:photoshop=\" http://ns.adobe.com/photoshop/1.0/\" \n "
404
+ + " xmlns:xmpMM=\" http://ns.adobe.com/xap/1.0/mm/\" \n "
405
+ + " xmlns:stEvt=\" http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\" \n "
406
+ + " xmlns:stRef=\" http://ns.adobe.com/xap/1.0/sType/ResourceRef#\" \n "
407
+ + " xmlns:xmp=\" http://ns.adobe.com/xap/1.0/\" \n "
408
+ + " xmlns:xmpGImg=\" http://ns.adobe.com/xap/1.0/g/img/\" \n "
409
+ + " xmlns:dc=\" http://purl.org/dc/elements/1.1/\" \n "
410
+ + " xmlns:pdf=\" http://ns.adobe.com/pdf/1.3/\" >\n "
411
+ + " <photoshop:LegacyIPTCDigest>CDCFFA7DA8C7BE09057076AEAF05C34E</photoshop:LegacyIPTCDigest>\n "
412
+ + " <photoshop:ColorMode>3</photoshop:ColorMode>\n "
413
+ + " <photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>\n "
414
+ + " <photoshop:ICCProfile>sRGB IEC61966-2.2</photoshop:ICCProfile>\n "
415
+ + " </rdf:Description>\n "
416
+ + " </rdf:RDF>\n "
417
+ + "</x:xmpmeta>" ;
418
+
419
+ Assertions .assertThrows (XMPException .class ,
420
+ () -> XMPMetaFactory .parseFromBuffer (xmp .getBytes (StandardCharsets .UTF_8 )));
421
+ }
262
422
}
0 commit comments