diff --git a/src/main/java/org/verapdf/parser/PDFStreamParser.java b/src/main/java/org/verapdf/parser/PDFStreamParser.java index a101bd49..06537f2a 100644 --- a/src/main/java/org/verapdf/parser/PDFStreamParser.java +++ b/src/main/java/org/verapdf/parser/PDFStreamParser.java @@ -281,6 +281,12 @@ private ASInputStream readInlineImage() throws IOException { if (!imageEndFound) { LOGGER.log(Level.WARNING, "End of inline image not found"); } + 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); } 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);