Skip to content

Commit

Permalink
Add inline image with different color spaces tests
Browse files Browse the repository at this point in the history
DEVSIX-8480

Autoported commit.
Original commit hash: [8991403ab]
  • Loading branch information
Andrei Stryhelski authored and iText-CI committed Aug 19, 2024
1 parent cbb6db2 commit c0edf88
Show file tree
Hide file tree
Showing 15 changed files with 129 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,135 @@ public virtual void ParseInlineImageTest() {
}

[NUnit.Framework.Test]
public virtual void Test() {
PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "calgray.pdf"));
for (int i = 1; i <= pdf.GetNumberOfPages(); i++) {
public virtual void ParseInlineImageCalRGBColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageCalRGBColorSpace.pdf"))) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(i));
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfName name = new PdfName("Cs1");
PdfColorSpace colorSpace = pdf.GetPage(1).GetResources().GetColorSpace(name);
PdfArray pdfArray = (PdfArray)colorSpace.GetPdfObject();
PdfName actualName = (PdfName)pdfArray.Get(0);
NUnit.Framework.Assert.AreEqual(PdfName.CalRGB, actualName);
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageCalGrayColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageCalGrayColorSpace.pdf"))
) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfName name = new PdfName("Cs1");
PdfColorSpace colorSpace = pdf.GetPage(1).GetResources().GetColorSpace(name);
PdfArray pdfArray = (PdfArray)colorSpace.GetPdfObject();
PdfName actualName = (PdfName)pdfArray.Get(0);
NUnit.Framework.Assert.AreEqual(PdfName.CalGray, actualName);
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageLabColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageLabColorSpace.pdf"))) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfName name = new PdfName("Cs1");
PdfColorSpace colorSpace = pdf.GetPage(1).GetResources().GetColorSpace(name);
PdfArray pdfArray = (PdfArray)colorSpace.GetPdfObject();
PdfName actualName = (PdfName)pdfArray.Get(0);
NUnit.Framework.Assert.AreEqual(PdfName.Lab, actualName);
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageICCBasedColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageICCBasedColorSpace.pdf")
)) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfName name = new PdfName("Cs1");
PdfColorSpace colorSpace = pdf.GetPage(1).GetResources().GetColorSpace(name);
PdfArray pdfArray = (PdfArray)colorSpace.GetPdfObject();
PdfName actualName = (PdfName)pdfArray.Get(0);
NUnit.Framework.Assert.AreEqual(PdfName.ICCBased, actualName);
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageDeviceRGBColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageDeviceRGBColorSpace.pdf"
))) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfStream stream = pdf.GetPage(1).GetContentStream(0);
String firstPageData = iText.Commons.Utils.JavaUtil.GetStringForBytes(stream.GetBytes());
NUnit.Framework.Assert.IsTrue(firstPageData.Contains(PdfName.DeviceRGB.GetValue()));
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageDeviceCMYKColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageDeviceCMYKColorSpace.pdf"
))) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfStream stream = pdf.GetPage(1).GetContentStream(0);
String firstPageData = iText.Commons.Utils.JavaUtil.GetStringForBytes(stream.GetBytes());
NUnit.Framework.Assert.IsTrue(firstPageData.Contains(PdfName.DeviceCMYK.GetValue()));
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageDeviceGrayColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageDeviceGrayColorSpace.pdf"
))) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfStream stream = pdf.GetPage(1).GetContentStream(0);
String firstPageData = iText.Commons.Utils.JavaUtil.GetStringForBytes(stream.GetBytes());
NUnit.Framework.Assert.IsTrue(firstPageData.Contains(PdfName.DeviceGray.GetValue()));
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageSeparationColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageSeparationColorSpace.pdf"
))) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfName name = new PdfName("Cs1");
PdfColorSpace colorSpace = pdf.GetPage(1).GetResources().GetColorSpace(name);
PdfArray pdfArray = (PdfArray)colorSpace.GetPdfObject();
PdfName actualName = (PdfName)pdfArray.Get(0);
NUnit.Framework.Assert.AreEqual(PdfName.Separation, actualName);
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageDeviceNColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageDeviceNColorSpace.pdf"))
) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfName name = new PdfName("Cs1");
PdfColorSpace colorSpace = pdf.GetPage(1).GetResources().GetColorSpace(name);
PdfArray pdfArray = (PdfArray)colorSpace.GetPdfObject();
PdfName actualName = (PdfName)pdfArray.Get(0);
NUnit.Framework.Assert.AreEqual(PdfName.DeviceN, actualName);
}
}

[NUnit.Framework.Test]
public virtual void ParseInlineImageIndexedColorSpaceTest() {
using (PdfDocument pdf = new PdfDocument(new PdfReader(sourceFolder + "inlineImageIndexedColorSpace.pdf"))
) {
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy());
pdfCanvasProcessor.ProcessPageContent(pdf.GetPage(1));
PdfName name = new PdfName("Cs1");
PdfColorSpace colorSpace = pdf.GetPage(1).GetResources().GetColorSpace(name);
PdfArray pdfArray = (PdfArray)colorSpace.GetPdfObject();
PdfName actualName = (PdfName)pdfArray.Get(0);
NUnit.Framework.Assert.AreEqual(PdfName.Indexed, actualName);
}
pdf.Close();
}

private class InlineImageEventListener : IEventListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,6 @@ public virtual void CsInDictAsNameNullTest() {
, "/ICCBased"), exception.Message);
}

[NUnit.Framework.Test]
public virtual void NotSupportedCsWithCsDictionaryTest() {
PdfName colorSpace = PdfName.ICCBased;
PdfDictionary dictionary = new PdfDictionary();
PdfArray array = new PdfArray();
array.Add(PdfName.Pattern);
PdfStream stream = new PdfStream();
stream.Put(PdfName.N, new PdfNumber(4));
array.Add(stream);
dictionary.Put(colorSpace, array);
Exception exception = NUnit.Framework.Assert.Catch(typeof(InlineImageParsingUtils.InlineImageParseException
), () => InlineImageParsingUtils.GetComponentsPerPixel(colorSpace, dictionary));
NUnit.Framework.Assert.AreEqual(MessageFormatUtil.Format(KernelExceptionMessageConstant.UNEXPECTED_COLOR_SPACE
, "/ICCBased"), exception.Message);
}

[NUnit.Framework.Test]
public virtual void NullCsTest() {
NUnit.Framework.Assert.AreEqual(1, InlineImageParsingUtils.GetComponentsPerPixel(null, null));
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ internal static int GetComponentsPerPixel(PdfName colorSpaceName, PdfDictionary
}
if (PdfName.DeviceN.Equals(colorSpace.GetAsName(0))) {
//Checking colorants dict size
return colorSpace.GetAsDictionary(2).Size();
return colorSpace.GetAsArray(1).Size();
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion port-hash
Original file line number Diff line number Diff line change
@@ -1 +1 @@
31da57227b4c3a8ec62f6c7b8c25c538b33bd3a3
8991403ab31f6c8a9135d5ca8850344ad7cce81b

0 comments on commit c0edf88

Please sign in to comment.