From 632bc011c0238cf0514731ae46b7df7aca50ba53 Mon Sep 17 00:00:00 2001 From: Kakhnovich Raman Date: Wed, 22 Jul 2026 19:16:03 +0300 Subject: [PATCH 1/2] Add getL and getStreamLength methods to PDInlineImage --- .../java/org/verapdf/parser/PDFStreamParser.java | 4 ++++ .../java/org/verapdf/pd/images/PDInlineImage.java | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/verapdf/parser/PDFStreamParser.java b/src/main/java/org/verapdf/parser/PDFStreamParser.java index a101bd49..b3aa296f 100644 --- a/src/main/java/org/verapdf/parser/PDFStreamParser.java +++ b/src/main/java/org/verapdf/parser/PDFStreamParser.java @@ -281,6 +281,10 @@ private ASInputStream readInlineImage() throws IOException { if (!imageEndFound) { LOGGER.log(Level.WARNING, "End of inline image not found"); } + int lastIndex = image.size() - 1; + if (CharTable.isSpace(image.get(lastIndex))) { + image.remove(lastIndex); + } byte[] buffer = getByteArrayFromArrayList(image); return new ASMemoryInStream(buffer, buffer.length, false); } diff --git a/src/main/java/org/verapdf/pd/images/PDInlineImage.java b/src/main/java/org/verapdf/pd/images/PDInlineImage.java index ee8738f8..3d6e770a 100644 --- a/src/main/java/org/verapdf/pd/images/PDInlineImage.java +++ b/src/main/java/org/verapdf/pd/images/PDInlineImage.java @@ -43,13 +43,15 @@ public class PDInlineImage extends PDResource { private final PDResources imageResources; private final PDResources pageResources; + private final long dataStreamLength; public PDInlineImage(COSObject obj, PDResources imageResources, - PDResources pageResources) { + PDResources pageResources, long dataStreamLength) { super(obj); this.imageResources = imageResources; this.pageResources = pageResources; - } + this.dataStreamLength = dataStreamLength; + } public boolean isInterpolate() { COSObject interpolate = getInlineImageKey(getObject().get(), ASAtom.INTERPOLATE); @@ -62,6 +64,14 @@ public Long getBitsPerComponent() { return bitsPerComponent.getInteger(); } + public Long getL() { + return getInlineImageKey(getObject().get(), ASAtom.LENGTH).getInteger(); + } + + public Long getStreamLength() { + return this.dataStreamLength; + } + public List getCOSFilters() { COSObject filters = getInlineImageKey(getObject().get(), ASAtom.FILTER); From 805578cf1f7cfd105b39c2d3bdc92092a52e9e94 Mon Sep 17 00:00:00 2001 From: Kakhnovich Raman Date: Thu, 23 Jul 2026 16:04:19 +0300 Subject: [PATCH 2/2] Update PDFStreamParser.java --- src/main/java/org/verapdf/parser/PDFStreamParser.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/verapdf/parser/PDFStreamParser.java b/src/main/java/org/verapdf/parser/PDFStreamParser.java index b3aa296f..06537f2a 100644 --- a/src/main/java/org/verapdf/parser/PDFStreamParser.java +++ b/src/main/java/org/verapdf/parser/PDFStreamParser.java @@ -281,9 +281,11 @@ private ASInputStream readInlineImage() throws IOException { if (!imageEndFound) { LOGGER.log(Level.WARNING, "End of inline image not found"); } - int lastIndex = image.size() - 1; - if (CharTable.isSpace(image.get(lastIndex))) { - image.remove(lastIndex); + if (!image.isEmpty()) { + int lastIndex = image.size() - 1; + if (CharTable.isSpace(image.get(lastIndex))) { + image.remove(lastIndex); + } } byte[] buffer = getByteArrayFromArrayList(image); return new ASMemoryInStream(buffer, buffer.length, false);