veraPDF / veraPDF-library

Industry supported, open source PDF/A validation library
http://verapdf.org/software
GNU General Public License v3.0
268 stars 48 forks source link

File is considered PDF/A-1b by VeraPDF compliant but isn't #1451

Closed THausherr closed 3 months ago

THausherr commented 3 months ago

The GUI considers this file to be compliant. It isn't, because it contains an XRef Stream (that it has version 1.6 might also be wrong).

Merged_PDFA.pdf

The library brings an exception, which brought me into the right direction:

java.lang.AbstractMethodError: Receiver class org.verapdf.gf.model.impl.pd.GFPDDocument does not define or inherit an implementation of the resolved method abstract getcontainsXRefStream()Ljava/lang/Boolean; of interface org.verapdf.model.pdlayer.PDDocument. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:226) at org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:98) at org.mozilla.javascript.gen.unnamed_script_35._c_script_0(unnamed script:0) at org.mozilla.javascript.gen.unnamed_script_35.call(unnamed script) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:412) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3578) at org.mozilla.javascript.gen.unnamed_script_35.call(unnamed script) at org.mozilla.javascript.gen.unnamed_script_35.exec(unnamed script) at org.verapdf.pdfa.validation.validators.JavaScriptEvaluator.getTestEvalResult(JavaScriptEvaluator.java:143) at org.verapdf.pdfa.validation.validators.BaseValidator.checkObjWithRule(BaseValidator.java:309) at org.verapdf.pdfa.validation.validators.BaseValidator.firstProcessObjectWithRule(BaseValidator.java:305) at org.verapdf.pdfa.validation.validators.BaseValidator.checkAllRules(BaseValidator.java:282) at org.verapdf.pdfa.validation.validators.BaseValidator.checkNext(BaseValidator.java:195) at org.verapdf.pdfa.validation.validators.BaseValidator.validate(BaseValidator.java:144) at org.verapdf.pdfa.validation.validators.BaseValidator.validate(BaseValidator.java:108)

code used:

        VeraGreenfieldFoundryProvider.initialise();
        PDFAFlavour flavour = PDFAFlavour.fromString("1b");
        try (PDFAParser parser = Foundries.defaultInstance().createParser(new File(pdfaMergedFilename), flavour))
        {
            PDFAValidator validator = Foundries.defaultInstance().createValidator(flavour, false);
            ValidationResult veraResult = validator.validate(parser);
            assertTrue(veraResult.isCompliant());
        }
MaximPlusov commented 3 months ago

hi @THausherr What version of GUI do you have? We added rule about xref stream after your issue. New release 1.26 already have this rule. What verapdf-library and verapdf-validation dependencies do you have in your code? It looks like you have an old version of verapdf-validation.

THausherr commented 3 months ago

Aaargh... embarassing. sorry. It is properly reported in the GUI, I updated now, it works fine. The library is version 1.26.1.

    <dependency>
        <groupId>org.verapdf</groupId>
        <artifactId>validation-model</artifactId>
        <version>1.26.1</version>
        <scope>test</scope>
    </dependency>

So the only thing that remains is this weird exception. Is this intended to be that way?

THausherr commented 3 months ago

Closing, sorry again. This one goes away by using validation-model-jakarta. (Another test worked fine, but this may be related to some imports)